IT

[eks, fargate, sagemaker] 2. Microservices 파트 개요 및 설계 - Microservices구축시 EKS 와 Serverless 비교 및 Machine Learning Service 확장 프로젝트 본문

프로젝트/eks, fargate, sagemaker

[eks, fargate, sagemaker] 2. Microservices 파트 개요 및 설계 - Microservices구축시 EKS 와 Serverless 비교 및 Machine Learning Service 확장 프로젝트

abcee 2019. 4. 22. 22:41

2. Microservices

2.1 시스템 개요

사용자에게 Push 메시지를 보내기 위해 토큰을 관리하는 서비스, 레스토랑 예약 서비스, 레스토랑 예약 시 사용자에게 제공되는 여러가지 정보들을 관리하는 서비스, 예약이 완료된 사용자에게 설문조사를 Push하는 서비스, 설문 조사 자료를 관리하는 서비스, 설문조사자료  를 이용하여 사용자가 좋아할 만한 레스토랑을 추천해주는 서비스가 필요하다.

2.2 시스템 설계

 

서비스 명세

서비스 명

서비스 내용

Push Service

- 사용자의 전화번호와 토큰을 매핑하여 관리

- FCM을 이용해 사용자에게 설문조사 URLPush

Survey Service

- 설문조사 정보를 관리

Survey Push Service

 

- 레스토랑을 예약한 사용자들에게 설문조사를Push하기 위해 Push Service를 호출

Restaurant Information Service

- 레스토랑 정보 제공

Book Service

- 레스토랑 예약 서비스를 제공

 

API 명세

레스토랑 예약 API, 정보 API, 모바일 PUSH API, 설문조사 API가 존재한다. API의 명세와 설명은 [부록]에서 확인할 수 있다.

 

 

시스템 구성도

서비스별로 독립된 database를 소유하며 각각의 서비스들은 REST API로 연결된다. 최종적으로 설계된 시스템 구성도는 [그림 2.1-1]과 같다.

[그림 2.1-1]

서비스 흐름도

레스토랑 예약 서비스는 예약과 설문조사 두 단계로 나뉜다.

[예약 서비스]

예약 서비스는 사용자가 App을 이용해 원하는 레스토랑을 예약하는 서비스로 [그림 2.1-2]의 순서대로 진행된다.

1. 사용자가 레스토랑 예약 App을 설치할 때, FCM에서 새로운 token을 받음

2. 사용자의 핸드폰 번호와 token을 담아 PUSH API를 요청

3. PUSH API에서 핸드폰 번호와 token을 매핑하여 저장

4. 사용자에게 레스토랑 목록을 보여주기 위해 레스토랑 예약 app에서 INFO API GET 요청

5. 사용자에게 레스토랑 목록이 나타나고 특정 레스토랑을 예약

6. 사용자의 핸드폰 번호, 예약한 레스토랑의 ID, 예약 날짜를 담아 BOOK APIPOST 요청

[그림 2.1-2]

[설문조사 서비스]

설문조사 서비스는 레스토랑을 예약한 사용자들에게 설문조사를 위한 URL을 보내주고 사용자가 평가한 정보를 저장하는 서비스로 [그림 2.1-3]과 같이 진행된다.

1. survey push 서비스는 정해진 시간마다 BOOK API를 호출해 예약된 사용자 목록을 받아오고 그것을 담아 PUSH APIPOST 요청

2. PUSH API는 사용자들에게 설문조사 URLPUSH하기 위해 FCMAPI를 호출

3. FCM에서 레스토랑 App을 설치했으며 레스토랑을 예약한 사용자들에게 설문조사 URLPUSH.

4. 사용자가 설문조사를 위해 PUSH된 링크를 클릭

5. 사용자가 설문조사 Web 화면을 통해 설문조사를 진행

6. 설문조사의 결과를 저장하기 위해 SURVEY API를 호출

[그림 2.1-3]

2.3 인프라 설계

 

Network

내결함상을 향상시키기 위해 2개의 가용영역에 각각 2개의 Public Subnet2개의 Private Subnet을 생성. 또한 외부 패킷이 서비스들에게 직접 전달되지 못하도록 Private Subnet에 배치 하여 ELB를 통해 전달되도록 했으며, 서비스에 전달된 패킷이 사용자들에게 전달될 수 있도록 Public Subnet에 배치된 Nat Gateway로 라우팅.

Database

survey 서비스를 제외한 나머지 서비스들의 경우 관계형 database를 이용하여 RDS를 이용하 도록 했으며 하나의 database instancedatabase를 나누어 사용. 또한 내결함성 향상을 위해 Multi-AZ를 이용해 2개의 가용영역에 database를 배치. survey 서비스의 경우 비정형의 데이터 가 저장되어 Dynamo DB를 이용.  

EKS

EKS Cluster 생성시 선택한 2개의 Subnet의 작업 노드에 서비스들이 container형태로 생성되며 ELB(NLB)를 통해 패킷을 전달받는 형태로 구성.

[그림 2.3-1]

Serverless

EKS와 마찬가지로 Container 형태로 서비스들이 동작하지만 ECS Fargate 서비스를 이용함으 로써 작업 노드를 생성하지 않고 container만을 관리하도록 구성했다. 또한 각각의 서비스들은 하나의 ELB(ALB)의 서로 다른 port를 통해 패킷을 전달받도록 구성.

[그림 2.3-2]

Comments