Micro Service 외부, 내부 Architecture를 편하게 구성할 수 있게 도와주는 오픈소스 플랫폼 Jhipster에 대해서 얘기하고자 한다. JHipster(Java Hipster)란? JHipster는 자바 진영에서 modern 한 모놀리스 애플리케이션 또는 마이크로 서비스를 빠르게 적용, 개발, 배포할 수 있게 도와주는 오픈소스 플랫폼이다. https://www.jhipster.tech/ JHipster - Full Stack Platform for the Modern Developer! JHipster is a development platform to quickly generate, develop, and deploy modern web applications and microserv..
분류 전체보기
단계별로 성장하자!Bounded Context 기반 도출 바운디드 컨텍스트란 DDD를 적용한 설계에서 비즈니스 응집성이 있는 도메인을 정의하고 도메인 간의 경계를 식별하는 단위를 의미한다. 이 바운디드 컨텍스트가 마이크로서비스를 식별하는데 좋은 단위로 사용된다. 우선, 하나의 큰 도메인을 전략적으로 중요도에 따라 나누어야 한다. 또한, 하나의 큰 도메인을 여러 개의 하위 서브 도메인으로 분리해야 한다. 이때, 똑같은 회원이더라도 예약 도메인에서의 회원과 결제 도메인에서의 회원은 의미가 다르다. 예약 도메인에서는 예약자의 개인정보를 가지고 있는 예약자의 역할, 결제 도메인에서는 결제자의 역할로 카드 정보 등을 가지고 있는 회원을 의미한다. 따라서, 각 바운디드 컨텍스트마다 같은 회원이더라도 각 컨텍스트에서 사용되는 언어로 ..
Layerd, Clean, Hexagonal과 같이 Micro Service 내부에서 사용되는 아키텍처에 대해 얘기해보고, 마지막 부분에서는 Hexagonal Architecture에 대한 생각과 커스텀하게 사용했던 패키지 구조에 대해서도 얘기해보겠다. 비즈니스 로직은 왜 분리해야 할까? 우선, 비즈니스 로직은 Process Rule, Flow, Concept 세 가지를 표현하는 용어이다. 이러한, 비즈니스 로직을 개발자는 코드로 풀어내야 하고 유지보수하기 쉽게 만들어내야 한다. (유연성과 확장성을 고려) 애플리케이션에서 사용하는 추후에 변경될 수 있는 기술과 비즈니스 로직이 분리되어야 복잡성이 낮고 오랫동안 안정성 있게 유지보수할 수 있게 된다. 하지만, 내가 지금 참여하고 있는 프로젝트만 하더라도 P..
프로젝트를 진행하면서 Local 환경이 아닌 다른 환경에서는 JNDI를 이용하여 Datasource를 적용하게 되었다. WAS에 DB Resource가 등록되어 있는 이유 상황) 우선 여러개의 Datasource에 연결해야 했고, Jeus라는 WAS에 DB Resource 정보를 모두 저장해 놓은 상태였다. 여기서 왜 WAS에 Data Resource를 설정해 놓았는지 의문이 들 수 있다. (나도 그랬다..) 보통 지금까지 개발할 때는 순수 JDBC나 Spring에서 제공해주는 기본적인 DBCP를 사용해왔다. 하지만, 실제 운영할 때는 JDBC 설정을 WAS에서 하는게 유리한 경우가 있다. 그 이유는 미들웨어를 관리하는 인력은 따로 있다. 하나의 WAS에 여러개의 웹 어플리케이션을 구동하는 경우가 있고,..
최근 프로젝트에서 SessionFilter를 GenericFilterBean나 Filter가 아닌 OncePerRequestFilter를 extends하여 구현하게 되었다. 왜 OncePerRequestFilter를 사용했는지 이 글에서 다뤄보고자 한다. 우선 위 그림을 통해 Filter의 동작 순서에 대해 알아볼 수 있다. Filter는 DispatcherServlet 실행 전 후에 호출되는데, Filter를 사용하다보면 Filter가 중복으로 호출되는 경우가 발생한다. Filter가 중복 호출되는 Case Filter는 Servlet마다 호출되며, Servlet은 요청마다 Servlet을 생성해서 메모리에 저장한 뒤 같은 클라이언트의 요청이 들어오면 생성해 둔 서블릿 객체를 재활용한다. 하지만, 위 ..
CI/CD 패턴CI(Continuos Integration) / CD(Continuous Delivery/Deloyment)MSA 환경에서 비지니스 민첩성을 키우기 위해서는 배포 자동화를 구축할 필요가 있다. 이때, 자동화된 빌드나 배포 작업을 보통 CI/CD라고 부른다. 일반적인 플로우는 아래와 같다.새로운 버전의 코드와 테스트 코드를 함께 Github와 같은 형상 관리 시스템에 Push 한다.빌드 도구에서 특정 시간에 형상 관리 시스템으로부터 코드를 Pull해서 통합한 후에, 자동으로 빌드하고 테스트 코드를 실행하여 테스트를 수행한다.테스트 수행 결과를 따로 로그 파일에 리포팅하고, 빌드된 소스코드를 스테이징 환경에 자동으로 배포한다.QA 테스터가 스테이징 환경에서 테스트를 수행하고, 문제가 없으면 ..