본문 바로가기
Develop/Cloud

Microservice 12 Factors + 3 Factors

by 코딩의성지 2023. 2. 15.

1. base code

- 각 레퍼지토리에 저장된 마이크로서비스 단일 코드 베이스를 뜻함.

- 버전 제어를 위한 목적, 형상관리를 위해 코드를 한곳에서 배포하는 것이 목적.

- 이후 테스트 환경이나 라이브 환경 등에 배포하기 위해서는 통일된 코드 관리가 필요함

 

2. dependency isolation

- 각 마이크로 서비스는 자체 종속성을 가지고 패키징되어 있는 구조

- 전체 시스템에 영향을 주지 않는 상태에서 변경되어야 함

 

3. configurations

- 코드 내에 하드 코딩되어 있는 구성 설정 정보가 없어야함

- 위부에서 마이크로서비스의 설정에 필요한 작업들을 할 수 있어야함

- 동일한 구성정보가 외부 서비스 정보에 전파될 수가 있음

 

4. linkable backing services

- 서비스 지원에 대한 내용

- 예를들어 db, 캐싱, 메시징 같은 마이크로 서비스가 가져야할 보조 기능을 추가로 지원

- 해당 리소스를 각 서비스들과 분리함으로서 코드 디펜던시가 사라짐

 

5.stages of creation

- 빌드와 릴리즈와 실행환경을 각각 분리하는 것을 의미한다

- 각각읜 고유한 아이디로 태그를 가지고 있어야하고, 이전의 상태로 돌아갈 수 있게 롤백 시스템을 갖춰야함

- CI/CD 를 이용해 자동화 시키는 것이 좋다

 

6. stateless processes 

- 각 마이크로서비스는 다른 서비스와 상관없이 자체 프로세스에서 분리되어 운영될 수 있어야함

- 필요한 자원이 있다면 캐시나 별도의 데이터 저장소를 이용해 데이터 동기화하여 사용할 수 있어야함

 

7. port binding

- 각각의 마이크로서비스는 자체의 포트에서 노출되는 인터페이스 및 기능이 있어야한다

- 이렇게 하면 다른 마이크로서비스와의 격리가 가능하다.

 

8. concurrency

- 동일한 서비스가 여러 인스턴스에 나눠서 제공되기 때문에 동시성을 가지고 있어야함

 

9. disposabliity

- 각각의 마이크로 서비스의 인스턴스는 삭제가 가능하고 정상적으로 종료가 가능해야함

 

10. developement & production parity

- 개발단계와 프로덕션 단계를 구분할 수 있어야함

- 프로덕션 레벨과 개발단계가 구분되어 서로에 영향을 끼쳐선 안된다

 

11. logs

- 마이크로서비스에서 로깅은 이벤트 스트림으로 처리가 되어야함

- 로그 시스템 자체가 시스템 안의 다른 마이크로 서비스와 분리되어 있어야함

- 추가적으로 모니터링 시스템(ex. elk)을 사용할수가 있다.

 

 12. admin processes for eventual processes

- 각 리소스가 어떻게 사용되고 있는지 파악하고 관리할수있는 프로세스가 있어야함

- 리포팅하는 기능과 데이터 정의 및 분석 기능도 포함되어 있어야함

 

13. api first

- 마이크로 서비스는 api 형태로 제공

- 사용자 측에서 어떻게 사용할 것인지 고민해서 개발해야함

 

14. telemetry

- 모든 지표는 수치화 시각화 되어 관리되어야함

 

15. authentication and authorization

- 서비스를 사용함에 있어 인증/인가는 필수

- 인증/인가된 서비스 끼리는 데이터를 전달할수가 있어야함

 

반응형

댓글