본문 바로가기

분류 전체보기47

[DDD] Domain 영역의 구성 요소 맛보기(with 애플리케이션 아키텍처) 본 포스팅은 DDD 를 공부하면서 정리하기 위한 포스팅입니다. 출처 : 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) 1. 계층 구조 아키텍처 애플리케이션 아키텍처를 설계할 때, 가장 기본적으로 많이 사용하는 구조는 아래와 같습니다. 각 계층의 특징은 아래와 같습니다. 표현(Presentation) 클라이언트(사용자, 외부시스템 같은 요청을 보내는 주체)의 요청을 처리하고, 처리된 결과를 응답해주는 계층 웹 애플리케이션에서 사용하는 Controller 가 이 계층에 속한다. 응용(Application) 표현 계층에서 가공된 요청값을 받아 로직을 실행해서 결과를 표현 계층에 전달하는 계층 웹 애플리케이션에서 사용하는 Service 가 이 계층에 속한다. DDD 관점에서.. 2023. 5. 29.
[DDD] DDD - 엔티티(Entity)와 밸류(Value) (feat. Java) DDD 를 공부한 내용을 기록하기 위한 포스팅 입니다. 출처 : 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) 1. DDD 란? DDD 는 Domain Driven Design 의 약자로, 소프트웨어를 개발함에 있어 도메인을 중심으로 모델링하고 개발하는 개발 기법을 말합니다. 1-1. 도메인 (Domain) 도메인은 "소프트웨어를 통해 문제를 해결하고자 하는 업무영역" 을 의미합니다. 우리가 일상생활에서 사용하는 서비스들(ex. 네이버, 쿠팡, 카카오 등등) 도 하나의 거대한 도메인이라고 할 수 있습니다. 하지만, 도메인을 정의하기 용이하게 하기 위해 너무 거대한 영역의 경우 작은 여러 단위의 하위 도메인을 묶어 큰 도메인을 구성하게 됩니다. 아래에는 여러 하위 도메.. 2023. 5. 28.
[ArgumentResolver] 로그인 여부를 ArgumentResolver로 처리하기 사이드 프로젝트를 하다보면, 거의 필수로 들어가는 기능이 로그인 기능이라고 생각합니다. 편의를 위해 소셜로그인(ex. 카카오, 구글, 네이버 로그인)을 적용시키는 경우도 있지만, 로그인과 사용자 인증에 대한 깊은 고민을 해볼 필요가 있어서 한 번 쯤 직접 A부터 Z까지 개발해보는 것도 좋은 것 같습니다. 본 포스팅은 제가 사이드 프로젝트를 진행하면서 로그인과 사용자 인증 처리를 Spring 의 ArgumentResolver로 적용한 과정을 적어보자 합니다. 1. 로그인 기능 로그인 기능 자체는 어렵지 않다. 단순하게 로그인 아이디와 비밀번호를 받아 조회되는 사용자가 있으면 성공, 없으면 실패 정도의 로직입니다. 보통 로그인 기능을 구현할 때는 세션을 사용하지만, 공부를 해볼 겸 JWT 를 사용해봤습니다... 2023. 4. 25.
[ATDD] RestAssured를 이용해 multipart/form-data 요청 테스트 시, 한글 깨지는 오류 해결하기 사이드 프로젝트를 하다가 파일 업로드 기능을 개발했다. 파일 업로드의 경우, Request 의 Content-Type 을 multipart/form-data 로 보내도록 했는데, application/json 일 때, 문제가 없었던 한글깨짐 현상이 발생해서 테스트가 실패로 나오는 문제를 겪었다. 해당 문제를 해결한 과정을 적어보려고 한다. 1. 발생한 문제 보통 인수테스트를 작성할 때, 요청의 Content-Type(a.k.a MediaType, 구. Mime Type) 을 application/json 으로 보냈는데, 파일 업로드 기능을 테스트 하기 위해 요청의 Content-Type을 multipart/form-data 로 변경했다. 당연히, 그에 따라 Controller 의 파라미터에도 변화가 생겼.. 2023. 4. 22.
[AWS] RDS 설정하기 AWS 에서 데이터베이스를 서비스할 수 있는 RDS 설정 방법을 정리해보겠습니다. (본 포스팅은 이동욱님이 집필하신 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 를 공부한 내용으로 작성되었습니다.) 1. 데이터베이스 생성하기 AWS 메뉴에서 RDS 메뉴를 클릭하면 메인에 표시되는 "데이터베이스 생성" 을 클릭합니다. 데이터베이스는 MariaDB 로 생성해보겠습니다. 아래처럼 선택합니다. 밑으로 내려보면 템플릿을 설정하는 부분이 있습니다. 현재 프리티어 계정을 사용하시면, 프리티어로 선택해주시면 됩니다. 엔진버전은 특별하게 버전을 신경쓰는 상황이 아니라면, 기본으로 선택된 버전을 선택해줍니다. 설정부분에선 RDS 인스턴스의 이름과 마스터 계정 정보를 입력합니다. (마스터 계정 암호를 까먹으면 여러모.. 2023. 4. 14.
[2023 1분기] 2023년 1분기 회고 - 우아한형제들 면접 후기 2023년도 어느 덧 3월의 마지막 날을 맞이했다. 작년 하반기에 했던 우아한 테크캠프 Pro 5기를 수료한게(2022. 12. 25) 엊그제 같은데 벌써 3달이나 지났다는 생각에 깜짝 놀랬다. "올해부턴 분기별로라도 꼭 회고를 해야지" 라고 생각했기에 1분기 최대의 이벤트였던 우아한형제들 면접 후기와 그 때 내가 깨닫고 느낀 점을 써보려고 한다. 우아한형제들 면접 (feat. 탈락) 우아한 테크캠프 수료 보상으로 이루어진 우아한 형제들(이하. 우형) 채용 전형을 진행한 달이었다. 우아한 테크캠프에서 우수 수료생으로 선발된 보상이었다. 네카라쿠배를 갈 가능성이 생겼다는 생각에 매우 들뜨고 긴장됐던 것 같다. (지금 생각해보면 엄청난 김칫국이었는데 말이다...) 운 좋게 이력서가 통과되고 면접 날짜가 잡혔.. 2023. 3. 31.