Cloud Native Architecture
- springboot 3.0버전부터 jdk 17버전 이상 써야함
- spring cloud도 많은 변화가 생김
- 트랜드라고 해서 MSA로 무조건 갈 수는 없음
- scale risk
- technology risk
- 두가지를 고려해야 함
- Test bed를 위해 cloud를 쓰는 것도 비용이 만만치 않음
- 기업에서 사용하고 있는 인프라가 이미 있다면, Springboot의 제공되는 라이브러리를 사용해 간단하게 클라우드 시스템 구축 가능
- 넷플릭스에서 제공했었음
- Spring에서 넷플릭스에서 제공하던 것들을 근데 점점 바꾸는 추세. 의존도를 줄이고 있음
- API gateway같은 것들을 이미 바꿨음.
- Distribute archiecture는 기본적으로 registry 저장소가 필요함
- 이것을 service discovery라고 함
- Eureka 라는 service discovery를 제공했었음.
- 3.0으로 넘어가면서 이것도 spring cloud로 이전 중
- spring cloud를 사용하면 결국 private cloud를 손쉽게 구축이 가능해진다
특징
- 확장 가능한 아키텍처
- 수평적 확장에 유연
- 부하 분산(load balancing) 및 가용성(availability) 보장
- 시스템 또는 서비스 애플리케이션 단위의 패키지 제공
- 모니터링가능해야 함(telemetory?? 라고 표현한다고 함)
- 탄력적 아키텍처
- 서비스 생성, 통합, 배포, 비즈니스 환경 변화에대한 대응 시간을 단축
- 분할된 서비스 구조
- 무상태 통신 프로토콜
- 서비스의 추가와 삭제 자동 감지
- 변경된 서비스 요청에 따라 사용자 처리
- 장애 격리
- 특정 서비스에 오류 발생해도 다른 서비스에는 영향이 없다
- 블루 그린 배포
- 서비스가 작아지면서 이 배포가 가능해짐
- 덩치가 크면 카나리 배포라고 해서
- 한꺼번에 배포하기는 어려우니
- 일부 배포해가면서 단계별로 바꿔갔었음
아키텍처 패턴이란?
- 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책
- 디자인 패턴과 비슷하지만 더 넓은 범위
- 컴퓨터 하드웨어 성능 제한, 비즈니스 위험의 최소화와 고가용성, 모니터링 등 소프트웨어 공학의 다양한 문제 해결
- 일부 아키텍처 패턴은 소프트웨어 프레임워크 안에 구현됨
SDLC
- Software Development Lifecycle
- PMP 교육 swexpert 사이트에 있으니 들어보기
- Project management단계가 있음
- 프로젝트 범위 산정, 시간 산정, 의사결정, 통제 등의 과정을 알려줌