본문 바로가기

전체 글

(47)
레이어드 아키텍처가 아닌 것들 *'레이어드 아키텍처' 에서 이어지는 아티클입니다. A. N-tier 아키텍처.      N-티어 아키텍처는 종종 n-레이어드 아키텍처와 혼동되어 논리적인 부분을 나누는 아키텍처를 설명할 때 쓰이기도 하지만 엄밀히 따지면 n-티어 아키텍처는 논리적인 모듈이 아닌 "컴포넌트들을 관심사별로 '물리적'으로 독립된 모듈로 나누어 관리하는 아키텍처" 입니다. N-티어 아키텍처는 논리적인 분할에 집중하는 레이어드 아키텍처보다 물리적인 시스템 레벨의 아키텍처를 설명하는데 사용됩니다.    또한, N-티어 아키텍처는 CS의 특정 분야에서 쓰이는 용어가 아닌 "물리적 모듈로 분리"라는 개념적인 용어로 소프트웨어 아키텍처의 여러 상황에서 쓰일 수 있고 어떤 상황에서 쓰이냐에 따라 각 티어가 어떤 것을 말하는지 조금씩 달라..
코드 리뷰: 불완전한 객체에서 나타난 문제들 A. 개요    JPA에 익숙 해져가며 가며 도메인 주도 개발(DDD, Domain Driven Development)도 조금 배워가던 몇 달 전 아직 DDD와 객체지향 (OOP, Object Oriented Programming)에 관련된 원칙을 따르는 코드를 만드는 것이 아직 어색해서 인지, 코드 리뷰 중 몇가지 취약점이 있을 수 있을 코드가 발견되었습니다.  여기에는 여러가지 이슈들이 있어서 하나씩 풀어 보려고 합니다. B. 문제가 되던 부분 들과 코드 작성의 이유들// 문제의 코드 public static Progress from(ProgressRegisterForm form) { Help help = Help.createEmptyHelpWithOnlyId(form.getHe..
캐싱을 도입했다가 철회한 경우들. (첫번째 경우) 프로젝트를 진행하면서 캐싱을 도입했다가 캐싱을 효과적으로 사용하지 못한다고 느껴서 철회한 경우가 있어서 정리를 하며 캐싱을 도입하는 이유에 대해 고찰을 해보자고 합니다.  A. 첫번째 경우:   Redis  -> DB    1. 캐시 사용의 이유  프로젝트에서 필요한 가게 관련 데이터를 Kakao API의 DB에 의존하는 특성상 데이터를 관리할 수 없습니다.그래서 관련 데이터를 DB에 저장하여  관리하기보다는, 가게 검색시 카카오 API 요청으로 받는 가게 정보를 일시적으로 캐싱해 재검색시 API 요청을 줄여 성능 향상및 API 요청에 대한 비용을 줄이려고 했습니다.2. 프로젝트 변경그렇지만, 이후 가게 사장님이 직접 가게 정보를 추가할 수도 있게 서비스가 변경되면서 프로젝트의 DB에 저장된 정보와 캐싱..