본문 바로가기
아키텍처 | 설계

MSA 데이터 베이스 분리, 트랜잭션 처리 TCC , 앤서블/테라폼

by 자유코딩 2020. 6. 7.

데이터베이스 분리

도메인 단위로 나눈다.

- 국가코드 같은 공유 정적 데이터는 코드나 설정파일에 넣는 것도 방법이다.

    - 이렇게 코드에 넣으면 속도가 빨라진다.

 

공유 데이터 접근하기

데이터베이스 1개를 같이 쓰지 말고 서비스에 접근해서 데이터를 다룬다.

 

창고 서비스와 재무 서비스도 서로 다른 데이터베이스를 써야 한다.

트랜잭션 유지 문제

마이크로 서비스 분산 트랜잭션 처리 방법

msa 는 중간에 서비스에 장애가 생기면 트랜잭션을 어떻게 보장할까

TCC 라고 하는 방법으로 해결 할 수 있다.

Try Confirm Cancel 의 줄임말이다.

트랜 잭션 참여자가 모두 동의하면 트랜잭션 매니저가 각각의 참여자에게 커밋하라고 지시한다.

하나라도 반대표가 나온다면 모든 참여자에게 롤백 명령을 보낸다.

 

 

지속적 통합과 지속적 배포

지속적 통합

- ci 서버에서 코드 커밋 감지

- 테스트

- 컴파일

 

지속적 배포

- 빌드 파이프 라인을 통해서 배포한다.

 

앤서블, 퍼펫 같은 프로비저닝 시스템

프로비저닝

- 환경 세팅이라고 생각하면 된다.

예를 들어서 spring boot 서버를 배포한다면 이런 과정이 필요하다.

1. aws ec2 할당

2. ec2에 jvm 설치

3. (로그 수집 시) logstash 설치

 

시간이 갈 수록 더 많은 소프트웨어를 설치하게 될 수도 있다.

이런것을 세팅하는데 점점 더 많은 시간이 걸릴 것이다.

 

시간이 지나면서 같은 툴이 설치되어있는지 반복해서 감시하는 일도 지겨운 일이다.

이 프로비저닝 시간을 줄이기 위한 1가지 방법은 공통적으로 의존하는 것들을 주입한 가상머신 이미지를 만드는 것이다.

 

이렇게 하면 이 커스텀 이미지를 가동시키고 서비스를 설치하면 된다.

1. 커스텀 이미지 설치(jvm, logstash 포함)

2. 서비스 설치

 

이런 방식의 단점

- 이미지 생성 시간이 오래 걸릴 수 있다.

- 이미지가 굉장히 클 수 있다. -> 20GB 쯤 되면 네트워크를 통해서 옮기기 쉽지 않다.

 

배포 산출물을 이미지로 갖는 것의 의미

java 로 만들어서 jar 가 나왔던지

루비로 만들어서 gem이던지

이미지로 만들면 이미지가 동작하는지만 확인하면 된다.

배포 산출물을 추상화 할 수 있다.

 

도커를 쓰는 이유, 장점

도커는 리눅스 기반의 가상화 플랫폼이다.

플랫폼 독립적으로 리눅스 기반의 현재 실행 환경을 이미지로 만들 수 있다.

어디서나 해당 이미지를 실행해서 배포할 수 있다.

 

앤서블과 비슷하지만 다른 테라폼

프로비저닝 도구지만 테라폼은 특정 클라우드 환경을 배포하는 것에 더 초점이 맞춰져 있다.

예를 들어서 아래 작업을 모두 해야 한다고 했을때 테라폼은 도움이 될 수 있다.

1. ec2 인스턴스 만들기

2. 보안그룹 설정

3. vpc 설정

4. ssh 설정

5. s3 생성

6. gateway 설정

이런 설정들을 HCL 이라는 언어로 작성하고 적용하면 된다.

 

 

MSA 의 크기

마이크로 서비스 아키텍처 책에서는 2주 정도의 기간에 작성할 수 있는 코드 베이스라고 말하고 있다.

 

댓글