본문 바로가기

SW/마이크로서비스

마이크로서비스 : 서비스 간 연계 구현 : 방법, 개념, 개요 쇼피몽 서비스 업무 흐름 마이크로서비스들 간의 동기 및 비동기 연동 기능을 구현해서 고객이 상품을 구매하는 쇼핑몰 시스템의 주요 프로세스를 구현하고 테스트해 보았습니다. 이 쇼핑몰 시스템의 여러 업무 중 상품 구매를 위한 프로세스를 구현합니다. 이 프로세스를 좀 더 자세히 설명하면, 구매자가 상품구매를 위해 구매할 상품과 수량을 입력하면 Account 서비스로 구매자에 해당하는 주소정보를 조회해서 가져옵니다. Product 서비스로 구매하려는 상품의 가격정보를 조회해서 가져옵니다. 구매자가 가져온 주소와 상품의 가격을 확인하고 최종 구매를 결정하면, 이 정보가 배송 서비스로 전달됩니다. 이 상품 구매 프로세스를 동작하게 하기 위한 각 서비스간의 동기 및 비동기 방식의 연동 기능을 구현하고 테스트합니다. ..
마이크로서비스 : Spring Boot : 도메인 모델 구현 방법 : 개요, 개념, 정의 업무기능 추가 Account에 간단하게 아이디와 이름, 주소와 이메일 주소만을 갖는 간단한 객체로 설계하고 구현을 해보았습니다. 모델이 코드로 어떻게 구현되는지 또 어떻게 테스트해 볼 수 있는지 이해할 수 있었습니다. 그래서 이번에는 Account Domain Model 전체로 확장해서 구현하고 테스트를 해보았습니다. 초기 하나의 문자열 정보로 관리했던 주소는 주소와 우편번호로 구체화하여 별도 객체로 분리하였습니다. 또한 쇼핑몰 서비스를 사용하는 회원은 판매자, 구매자로 회원 유형을 분리하였고, 또한 판매나 구매 실적에 따라 등급이 부여될 수 있어야 하므로 별도 MembershipLevel을 추가합니다. 따라서 초기의 간단했던 Account는 화면과 같이 Account, Address, Membertyp..
마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경 Swagger를 활용한 API 명세 & 테스트 Swagger는 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화면으로 확인할 수 있게 해주는 오픈소스 프로젝트입니다. 특히 REST API를 만드는 경우 주소나 파라미터가 변경되더라도 그 변경된 소스를 그대로 참조 문서로 만들어줍니다. 따라서 API가 수정되더라도 이 API를 이용하는 개발자는 문서를 참조하고 또 쉽게 테스트를 할 수 있습니다. 따라서 Swagger를 통해 API를 테스트하기 위해 pom.xml 파일에 화면과 같이 추가합니다. Config 패키지에 SwaggerConfig 클래스 스프링 부트 프로젝트에 추가하였습니다. 마지막으로 Application의 Swagger 어노테이션을 추가합니다. 소스코드가 변경되었으니 프로젝트를 다시 Bu..
마이크로서비스 : Spring Boot 프로젝트 생성 : 방법, 구현, 예제 Spring Boot Project 생성 실제 소스코드를 구현하기 위해 Spring Boot 프로젝트를 생성하고 Maven에 의존성, 즉 Dependency를 추가합니다. 이렇게 프로젝트를 만들고 개발을 위한 설정이 끝나면 구현을 위한 소스코드 패키지의 구조를 정의하고, 이후 하나씩 구현을 진행합니다. Spring Boot 프로젝트는 New - Starter Project를 선택하면 New Spring Starter Project 화면이 출력되는데, 이 화면의 Name, Location, Group, Artifact를 화면과 같이 입력합니다. 그리고 Next 버튼을 누르면 프로젝트의 Dependency를 추가하는 화면으로 전환되는데, Spring Boot Version을 선택합니다. 프로젝트에서 사용할 ..
마이크로서비스 : 구현하기 위한 개발환경 구축 방법 : 오픈소스 종류, 활용 개발환경 구축 마이크로서비스를 구현하기 위해 오픈소스를 활용한 개발환경을 구축해보도록 하겠습니다. 개발환경은 JDK, STS, Lombok, Maven의 순서로 설치를 합니다. 본 강의의 실습을 위해 JDK와 STS를 설치합니다. 그리고 자바에서 도메인 객체를 만들 때 프로퍼티에 대한 Getter, Setter 그리고 ToString, 생성자들을 객체마다 반복적으로 만들어야 합니다. 이런 반복적인 코드들을 어노테이션 선언만으로 자동 생성해 주는 라이브러리인 Lombok도 설치합니다. 그리고 Build 도구는 Maven을 사용합니다. JDK 설치 JDK는 오라클 사이트의 다운로드 메뉴에서 자신의 운영체제와 맞는 버전을 다운로드 받아서 설치합니다. 실습에 사용하는 컴퓨터는 64비트 운영체제로, 64비트용 J..
마이크로서비스 : 쇼피몽 서비스 모델링 방법 : 개념, 정의, 개요 쇼핑몰 서비스 업무 흐름 쇼핑몰 서비스의 업무 흐름은 가장 기본적인 구매자의 제품 구매 사례 관점에 대해 알아보겠습니다. 구매자는 구매하고자 하는 상품과 구매 수량을 입력해서 상품을 주문하고, 주문한 상품의 배송상태를 확인합니다. 식별한 마이크로서비스들 간의 업무 흐름으로, 먼저 구매자는 상품 구매를 하기 위해서 화면을 통해 구매하려는 상품과 구매 수량을 입력합니다. 구매 정보가 입력되면 Account 서비스로 구매자 이름으로 입력된 사람이 회원인지 아닌지 확인합니다. Account 서비스에 구매한 상품의 배송을 위한 주소를 가져와 상품을 배송 받을 주소로 설정합니다. 그리고 구매하기 위해 입력한 상품 이름으로 Product 서비스에서 해당 상품의 가격이 얼마인지 요청해서 전달 받은 후 입력한 구매수량에..
마이크로 서비스 : 애그리게잇 식별 방법 : 개념, 정의, 개요 애그리게잇 도메인 객체의 관리는 객체의 생명주기 동안 무결성을 유지하고 생명주기 관리를 위해 객체의 관계가 복잡해지는 것을 최소화하는 것이 중요합니다. 따라서 업무상 관련 있는 객체들을 묶어 경계를 명확히 정의해서 객체 간 관계가 복잡해지지 않도록 생명주기 전 단계에서 도메인 객체의 무결성을 유지할 수 있게 해주는 Aggregate을 정의해야 합니다. Aggregate은 업무상 관련 있는 객체들을 모아 경계를 명확히 정의하여 객체 간 관계를 복잡하지 않게 합니다. 생명주기 상의 전 단계에서 도메인 객체의 무결성을 유지할 수 있게 해주는 패턴입니다. 한마디로 표현하면, 데이터 변경의 단위로 다루는 연관된 객체의 묶음입니다. Aggregate은 1개 이상의 Entity로 구성됩니다. 그 중 한 Entity는..
마이크로서비스 : 엔티티, 값객체, 표준 타입 식별하기 : 정의, 개요, 방법 헥사고날 아키텍처 전술적 설계는 이전 차시에서 헥사고날 아키텍처로 설명했던 마이크로서비스의 가장 안쪽의 도메인 모델을 설계합니다. 그 다음은 도메인 모듈, 그리고 마이크로서비스를 설계를 합니다. 이 헥사고날 아키텍처는 고유한 비즈니스의 개념을 표현하는 도메인 모델과 UI, 데이터베이스 등의 기술을 분리합니다. 도메인과 기술의 분리는 빠르게 변화하는 기술의 변경과 대체를 쉽고 빠르게 수행할 수 있습니다. 그럼 모델링을 하기에 앞서 모델 패키지 구조를 Model, Repository, Service로 구성하고, 그리고 실제 도메인 모델이 그려질 다이어그램이 위치합니다. Domain 안의 Model이라는 패키지 안에는 도메인 모델을 구성하는 Entity, 값 객체, 표준 타입의 도메인 모델들이 위치합니다. 이..