본문 바로가기

분류 전체보기58

헥사고날 아키텍처를 사용한 스프링 부트 로그인 API 구현해보기 목적 클린 아키텍처라는 책을 읽으면서 프로젝트의 아키텍처 자체에 관심을 가지게 되었습니다. 저자가 제시한 클린 아키텍처는 이론적인 의미는 이해하였으나 구현 방향에 대한 갈피를 잡지 못했습니다. 그러다 헥사고날 아키텍처에 대해 알게 되었습니다. 클린 아키텍처에서 제시한 핵심 정책의 분리에 대한 원칙을 지키고 있으며 좀 더 실무에서 유용하게 사용하고 있다는 사실을 알고 직접 구현해보며 이해하고 싶었습니다. 그래서 흔한 기능 중 하나인 로그인에 대해 헥사고날 아키텍처로 설계해 보았습니다. 직접 설계해보며 느낀점에 대해 포스팅 해볼까 합니다. 프로젝트 구조프로젝트 구조는 그림과 함께 보면 이해가 쉬울거라 생각해서 같이 가져왔습니다.각 계층에 대해 살펴보자면, Adapter각 핵심 로직과 외부를 연결하는 계층입니.. 2024. 7. 12.
구글 클라우드(GKE), 쿠버네티스, 도커 사용하여 스프링부트 프로젝트 배포하기(맥os M3 기준) 들어가며 개념 설명보다는 제가 진행했던 부분 위주로 복기하며 포스팅을 해보려 합니다. 기본 스프링부트 프로젝트에 테스트용 restAPI 만든 뒤 도커용 이미지를 생성하고 쿠버네티스에 배포하여 클라우드 환경을 구성하는 과정입니다. 원래 제로에서 시작하면 설정을 하나하나 만져줘야 해서 더 어렵다고 하는데 저는 구글에서 제공하는 엔진을 사용하였기 때문에 어느정도 난이도는 내려가지 않았나 생각합니다. 처음 실습하시는 분들께도 3개월 무료 체험판(?)을 제공하기 때문에 무리없이 구현이 가능합니다.  GKE  https://cloud.google.com/kubernetes-engine?hl=ko cloud.google.com 해당 홈페이지에 접속하여 구글 클라우드에 회원가입 해줍니다. 회사 메일로 하면 회사 프로젝.. 2024. 7. 4.
클린 아키텍쳐(clean architecture)란? 책을 읽고나서 클린 아키텍쳐 건물을 만들기 전 제대로된 청사진을 만든 후 그것을 보며 만들게 되면 더 튼튼한 건물을 만들 수 있습니다. 소프트웨어도 마찬가지입니다. 클린 아키텍쳐를 설계하면 소프트웨어의 지속적인 관리, 유지보수를 하는데 엄청난 효과를 볼 수 있습니다. 초반에 한 회사에 대한 이야기가 나옵니다. 회사는 성공적으로 애플리케이션을 만듭니다. 그리고 애플리케이션을 유지보수하고 새로운 기능을 추가합니다. 그 과정에서 직원 수는 계속해서 늘어나지만 새로운 기능의 개발속도는 점점 줄어듭니다. 막바지에는 거의 개발을 하지 못하는 지경에 이르게 됩니다. 원인은 바로 클린 아키텍쳐 설계를 잘못했기 때문입니다. 빈약한 아키텍쳐는 지저분한 코드를 만들게 되고 이는 새로운 코드를 추가하거나 기존의 코드를 수정할 때 다양한 문.. 2024. 7. 2.
HTTP 간단 총 정리( 프로토콜, HTTP METHOD, 상태코드, Header, body, 캐쉬 값) 들어가며 HTTP는 웹 개발자 중 백엔드 개발자는 물론 프론트엔드 개발자에게도 필수적으로 알아야할 지식 중 하나라고 생각합니다. 웹을 사용하려면 웹 브라우저를 사용하고 이 웹 브라우저에서 일어나는 일련의 과정들에 HTTP가 필수적인 요소이기 때문입니다. 저는 이 HTTP의 개념에 대해 대강 알고 있는 수준이었습니다. 실무에서 필요한 부분만 그때그때 익혀 사용하는 수준이었어요. 그래서 이번 기회에 총 정리하는 느낌으로 개념을 잡아놓으면 업무에 큰 도움이 될 것이라 판단했습니다. 사실 왜 미리 하지 않았을까 하는 후회가 더 큽니다. 참고로 공부는 인프런의 김영한 선생님의 강의를 들었습니다. 어떤 기술에 대한 설명을 스토리처럼 이해하기 쉽게 설명해주셔서 추천하는 강의입니다!  말그대로 넓은 범위의 과목을 간단.. 2024. 6. 21.
자바 스프링부트 테스트코드 작성 JUnit5 그리고 Mock 테스트 코드의 중요성 개발자의 길을 어느덧 3년 걸었지만 테스트 코드의 중요성을 깨닫지 못하고 있었습니다. 웹 프로젝트 여러개를 맡으며 개발이 끝나고 테스트 기간이 되면 단위 테스트를 진행하였는데 직접 버튼을 누르고 로그와 DB를 눈으로 확인하였습니다. 물론 이 방법이 가장 직관적이고 확실한 테스트 방법일 수 있습니다. 하지만 규모가 작은 프로젝트라도 테스트 케이스가 100개가 넘어가는 경우가 비일비재한데 수작업으로 진행하다보니 제대로 확인하지 못하는 경우가 많았습니다. 실제로 회사에 있을때 프로젝트의 완성도에 관한 이야기는 끊임없이 나오곤 했습니다. 저 또한 이 테스트에 대해 많은 고초를 겪었습니다. 내가 더 꼼꼼하게 확인해보면 되겠지, 하며 해봐도 예상치 못한 곳에서 오류가 터졌습니다.  물론 제 부.. 2024. 6. 18.
스프링 부트 초기세팅(Spring initializer, gradle kotlin, MariaDB, IntelliJ, Java17) 시작 토이 프로젝트를 만들어 보려고 합니다. 회사에서 주구장창 쓰던 1.8에서 벗어나 최신버전인 17을 사용하려고 합니다. 그 뿐만 아니라 최대한 안쓰던 기술 스택을 사용하여 구성합니다. 큰 틀인 스프링 부트, 마리아 db에서는 벗어나지 않으나 jsp 대신 리액트를 사용하려고 합니다. 이번 포스팅은 해당 프로젝트 중 스프링 부트를 구성하는데 필요한 세팅을 차례차례 알아보려고 합니다. 구성IntelliJSpring Boot 3.2.5MariaDB(tool : Sequel Ace)JPA, HibernateJava 17GitSourceTree준비tool을 먼저 설치합니다. 기본 환경은 맥입니다. 저는 홈브류(Homebrew)를 이용했습니다. CLI명령어로 프로그램을 간편하게 설치할 수 있어 애용합니다. 홈브류.. 2024. 6. 14.