클라우드 네이티브 애플리케이션 개발이란?
클라우드 네이티브
- 클라우드의 이점을 최대한 활용할 수 있도록 애플리케이션을 구축하고 실행, 배포하는 방식
클라우드 네이티브의 목표
- 변화하는 비즈니스 요구 사항에 빠르게 적응할 수 있는 유연하고 가용성이 높으며 확장 가능한 소프트웨어 제공
클라우드의 4가지 특성
MicroServices
- 분산 서비스
- 대규모 애플리케이션이 API를 통해 서로 통신하는 작고 독립적인 서비스 모음으로 구성되는 소프트웨어 아키텍처
- 작은단위로 운영시 장애시 대처가 유리, 대규모처리시 유리, 언어나기술을 서비스별로 독립적으로 선택가능
- 이들 구현하기 위해 컨테이너 기술이 사용됨
- 단점
- 분산된 수 백, 수 천개의 작은 앱을 관리해야 함
- 앱별 다양한 런타임 환경, 성능 간섭
- 잦은 빌드/배포, 설정 관리 복잡
- 트래픽 분산 관리, 서비스 디스커버리 등
CI/CD
- 지속적 통합(Continuous Integration, CI) + 지속적 배포(Continuous Deployment, CD) 코드 변경 사항이 자동으로 빌드, 테스트, 통합되어 서비스 환경에 배포되는 과정이 자동화된 개발 방식
- Jenkins, Github Actions
- 알아서 테스트를 하고 통합 시킨다. → 어플리케이션 수정이 부담이 없다.
- CI된 애플리케이션이 실서비스 환경에 자동적으로 배포가 됨
DevOps
- DevOps는 소프트웨어 개발과 운영을 유기적으로 통합하여 개발 라이프 사이클을 단축하는 동시에 비즈니스 목표를 달성할 수 있도록 빈번한 업데이트를 제공하는 것을 목표로 하는 소프트웨어 엔지니어링 문화
- DevOpes의 핵심 원칙
- 협업 및 커뮤니케이션: 개발자, 테스터, 운영 팀 간의 정기적인 커뮤니케이션과 조정을 통해 모든 사람이 변경 사항, 위험 및 개선 기회를 인지, 부서 간의 사일로를 허물고 응집력 있는 팀으로 협력하여 소프트웨어 업데이트를 더 빠르고 효율적으로 제공
- 자동화: 예를 들어 코드 빌드 및 테스트, 애플리케이션 배포, 인프라 관리와 같은 작업 자동화, 자동화를 통해 소프트웨어 업데이트를 더 빠르고 더 높은 품질로 제공, 가능한 한 많은 작업을 자동화하여 인적 오류를 줄이고 효율성을 개선하며 일관되고 반복 가능한 결과를 보장하여 프로세스 속도를 높이는 것
- 지속적인 개선 및 낭비 최소화: 데이터와 피드백을 사용하여 프로세스와 시스템을 지속적으로 평가하고 효율성을 개선하고 낭비를 최소화, 이러한 활동은 실험, 데이터 분석 및 피드백을 통해 이루어 지며, 이를 통해 개선이 필요한 영역과 프로세스와 시스템을 최적화할 수 있는 기회를 파악
- 짧은 피드백 루프를 통해 사용자 요구 사항에 집중: 정기적으로 사용자와 함께 변경 사항을 테스트 및 검증하고 사용자의 피드백을 개발 프로세스에 통합하여 고객의 요구를 충족하는 소프트웨어를 만들고 사용자 피드백을 기반으로 지속적으로 개선
- Container
- 컨테이너는 실행 환경과 성능을 격리, 표준화
- 애플리케이션을 OS환경까지 가상화해서 패키징: 컨테이너는 OS 환경까지 패키징되어있기 때문에 Linux, Windows, Mac, 가상 머신, 베어메달, 개발자의 컴퓨터, 데이터 센터, 온프레미스 환경, 퍼블릭 클라우드 등 사실상 어느 환경에서나 구동되므로 개발 및 배포가 쉬워짐
- 애플리케이션의 성능 격리: 컨테이너는 CPU, 메모리, 스토리지, 네트워크 리소스를 OS 수준에서 가상화하여 개발자에게 기타 애플리케이션으로부터 논리적으로 격리된 OS 샌드박스 환경을 제공합니다.
- 도커(Docker): 컨테이너를 실행시키거나 컨테이너 이미지로 빌드하는 과정에서 가장 많이 사용하는 컨테이너 관리 도구
마이크로서비스의 단점을 극복하는 기술: 컨테이너와 쿠버네티스
- Container: 다양한 App 환경을 OS까지 Image화 배포, 성능 격리 (docker)
- Container Orchestration: 사실상의 표준 kubernetes
- 분산된 수 백, 수 천개의 작은앱을 관리해야 함
- 앱 별 다양한 런타임 환경, 성능 간섭
- 잦은 빌드/배포, 설정 관리 복잡
- 트래픽 분산 관리, 서비스 디스커버리 등
'I leaned > Etc' 카테고리의 다른 글
CSRF, XSS, CORS (1) | 2023.07.10 |
---|---|
Docker & kubernetes (0) | 2023.07.05 |
클라우드 서비스 (0) | 2023.07.05 |
Redis (0) | 2023.06.27 |
대용량 시스템 (1) | 2023.06.01 |