삐삐리뽀

Spring Cloud로 MSA

지또치 2021. 8. 3. 11:56

software architecture 

 

Antifragile 특징

1. Auto scaling 

 - cpu, 메모리, 데이터베이스등 사용량에 따라 자동으로 스케일을 해줌

2. Microservices

 - 개별적인 모듀ㅜㄹ이나 서비스를 독립적으로 개발하고 배포, 운영으로 세분ㄱ화 된것

3. Chaos engineering 

 - 변동, 예견된 불확실성, 예견되지 ㅇ않은 불확실성 , 카오스 불확싱설

4. Continuous deployments 

 - ci/cd

 

 

Cloud Natice Architecture 특징

 

 

* 확장 가능한 아키텍처

 - 시스템의 수평적 확정에 유연

 - 확장된 서버로 시스템의 부하 분산, 가용성 보장

 - 시스템 또는, 서비스 애플리케이션 단위 패키지 (컨테이너 기반 패키지 )

 - 모니터링

 

* 탄력적 아키텍져

 - 서비스 생성 - 통합 - 배포 , 비즈니스 환경 변화에 대응 시간 단축

 - 분할된 서비스 구조

 - 무상태 통신 프로토콜 

 - 서비스의 추가와 삭제 자동으로 감지

 - 변경된 서비스 요청에 따라 사용자 요청 처리 (동적처리)

 

* 장애 격리 (Fault isolation)

 - 특정 서비스에 오류가 발생해도 다른 서비스에 영향X

 

 

CI/CD

*지속적인 통합,  CI

 - 통합서버, 소스관리 (SCM), 빌드도구, 테스트 도구

 - EX) jenkins, Team CI, Travis CI

* 지속적 배포

 - Continuous Delivery (수동반영)

 - Continuous Deplyment (자동반영)

* 카나리 배포와 블루그린 배포

 - ex) 90%는 이전버전을 사용하고 나머지는 신규버젼을 사용하면서 점진적으로 신규 사용량을 늘려가는 방식

 

DevOps


Microservices

 

Containers

* 기존 하드웨어 가상화 서버가상화에 비에 적은 리소스를 사용하여 구측

 

 

12Factors ( 클라우스서비스를 적용해야 할때 고려해야할 사항 12가지 )

1. BASE CODE

애플리케이션의 1개의 코드 베이스(Git, SVN)를 통해 관리되어야 하며, 동일한 코드로 운영/개발에 배포하여야 한다.

2. dependencies

애플리케이션의 모든 종속성을 명시적으로 선언하여 사용한다.

3. Configurations 

시스템 정보 외부에서 제어

4. Backing services

5. Build, Release, Run 분리

6. Process

독립적으로 실행해야 하며 필요한 정보가 있을경우 캐시나 메모피/파일을 사용

7. Port Binding

8. Concurrency

동시성, 많은수의 서비스를 동일한 시스템 복사

9. Disposability

삭제가 가능하고, 확장성이 있어야하 한다,

10. dev/prod parity

개발단계와 ,  운영서버를 분리할 수 이썽야 한다. 종속적이지 않도록 한다

11. Logs

로그를 이벤트 스트림으로 취급하여 별도의 저장소에 보관

12. Admin Process

admin/maintenance 작업을 일회성 프로세스로 실행해야 한다.