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
- 서비스를 사용함에 있어 인증/인가는 필수
- 인증/인가된 서비스 끼리는 데이터를 전달할수가 있어야함
'Develop > Cloud' 카테고리의 다른 글
[AWS] AWS EC2 인스턴스 (Ubuntu) 에서 MySql 세팅하기 (1) | 2019.12.25 |
---|---|
[AWS] AWS EC2 랑 Sublime Text 3 연동하기 (0) | 2019.12.18 |
[AWS] Putty 로 EC2 접속하기 (0) | 2019.12.15 |
[AWS] EC2 인스턴스 만들기 (3) | 2019.12.15 |
[AWS] VPC 구성하기 (0) | 2019.12.14 |
댓글