728x90
Software Architecture
Antifragile 환경
1. Auto scaling(오토 스케일링) : 자동 확장성
- 시스템을 구정하고 있는 인스턴스를 하나의 오토 스케일링 그룹이라고 한다.
- 그리고 묶은 다음 그룹에서 유지되어야 하는 최소의 인스턴스를 지저할 수 있고 사용량에 따라 자동으로 인스턴스를 증가할 수 있는 환경
- 예시) 5월이나 12월 같이 특수한 이벤트가 있는 달에는 서버의 운영 개수를 늘리고 비수기와 같을 때는 서버의 운영 개수를 다시 줄이는 작업
2. Microservices(마이크로서비스)
- 마이크로 서비스라는 것은 클라우드 네이티브 아키텍처, 클라우드 네이티브 어플리케이션의 핵심
- 기존 시스템들이 하나의 거대한 형태로 구축되어서 서비스되었다고 하면 마이크로 서비스라는 것은 전체 서비스를 구축하고 있는 개별적인 모듈이나 기능을 독립적으로 개발하고 배포하고 운영할 수 있도록 세분화된 서비스라고 볼 수 있습니다.
3. Chaos engineering(카오스 엔지니어링)
- 변동, 예견된 불확실성, 예견되지 않는 불확실성, 카오스 불확실성
- 시스템이 급격하고 예측하지 못한 상황이라도 견딜 수 있고 신뢰성을 쌓기 위해 운영 중인 소프트웨어 시스템에 실험하는 방법/규칙
- 시스템의 어떤 변동이나 예견된 불확실성이나 예견되지 않은 불확실성에 대해서도 안정적인 서비스를 제공할 수 있도록 구축되어야 한다는 것을 의미
4. Continous deplyment
- CI/CD(지속적인 통합/지속적인 배포)
- 클라우드 네이티브 어플리케이션은 적게는 수십 개, 많게는 수백 개 이상의 마이크로 서비스로 도메인이 분리되어 개발되는 경우가 일반
- 예시) 이렇게 하나의 어플리케이션을 구성하는 수백 개의 서비스들을 일일이 빌드하고 테스트하고 서버에 배포하는 등의 작업을 수작업으로 한다고 가정
- 시스템 자체의 복잡성을 떠나서 어플리케이션을 구성하고 있는 각각의 서비스를 빌드하고 배포하는 작업이 하나의 커다란 업무이자 작업의 로드가 심하게 걸리는 부분이 되어버릴 수도 있다.
- 그래서 이러한 수십 수백개의 마이크로 서비스를 빌드하고 배포함에 있어서 자동화된 시스템을 구축하고 하나의 작업에서 다른 작업으로 연계되는 과정을 파이프라인으로 연결시켜 놓게 되면 작은 변화뿐만 아니라 전체적인 시스템의 업그레이드 작업에서도 빠르게 적용할 수 있게 될 것이다.