Hybrid Multicloud
- Hybrid Cloud : private / public cloud를 하나의 인프라로 설정
- 멀티클라우드 : 클라우드 전략 중 하나로, 서로 다른 클라우드 모델을 혼합한 것
- Public / Private, IaaS/PaaS/SaaS를 조합
- Cloud A - email / Cloud B - CRM / Cloud C(Private) - Infrastructue
- 서로 다른 공급자를 이용할 수 있음
- Using case
- 한 서비스가 UI / API / Billing으로 구성된 multicloud로 가정
- 만약 특정 region에서 수요가 peak를 찍을 경우, 해당 region의 UI / Billing 부분의 Cloud service를 확장시켜 대응 가능
- 특정 클라우드에 모든 작업이 몰리는 것을 방지하기 위해 multicloud를 사용하기도 함
Microservices
- 특정 어플리케이션을 작은 구성 요소, 혹은 서비스 단위로 분할하여 제공하는 것
- 각각의 컨테이너에서 동작하는 stack을 보유
- API, Event, Message를 통해 데이터 교환
- Business에서의 의미
- 다수의 개발자가 독립적으로 개발 가능
- 다른 구성 요소에 대해 다른 stack으로 개발 가능
- 각 구성 요소에 대해 독립적인 scaling 가능
- SW의 개발 발전
- 초기 : 단일 프로그램을 함께 개발
- 중기 : PaaS를 통한 통합 개발 환경
- 최근 : 서비스를 독립된 구성 요소(검색, 추천, 별점 등)로 분할하여 개발
- 하나의 microservice에 이상 발생 시 다른 서비스로 대체 가능
Serverless Computing
- Infrastructure에서 Scaling, Scheduling, Patching 등의 관리에 필요한 노력을 경감
- 어플리케이션의 필요에 따라 자원 할당
- 필요에 따라 코드를 동작하며 필요에 따라 Scaling
- request된 정도에 따라서 비용 지불
- 인프라를 추상화하고, 각 기능별로 코드가 실행
- 모든 서비스에 대해 서버리스가 유용하지느 않음
- 어플리케이션의 특징을 분석
- 어플리케이션이 서버리스 패턴에 적합한지 확인
- 단시간 구동되거나, 특정 기간에만 동작하는 경우
- 이벤트 기반의 처리를 하는 경우
- stateless microservice
- Using Case
- IoT, 모바일 백엔드, 마이크로서비스
- 각종 데이터에 대해서 - 평가, 번역, 데이터 검증, PDF 처리, 정규화, 이미지 썸네일 등
Cloud Native Applications
- 오직 클라우드 환경 내에서만 동작하기 위한 어플리케이션
- 혹은 클라우드 특성에 맞게 재구성된 어플리케이션
- 어플리케이션을 구성하는 마이크로서비스로 구성
- 각 서비스는 독립적으로 scale됨
- 각 미이크로서비스는 실행 단위인 Container로 package됨
- Cloud Native Applications 개발 특징
- Microservice architectrue : 어플리케이션을 기능 단위로 분리
- rely on container : 유연성, scailability, portability 최대화
- Agile Method : 유저 피드백에 기반한 빠른 업데이트
DevOps on the Cloud
- 개발팀의 목표
- 소프트웨어 설계, 개발, 전송, 실행
- 신뢰성, 효율성 중시
- 운영팀의 목표
- 모니터링, 실패 예측, 환경 관리, 이슈 수정
- DepOps = Develop + Operation
- 개발, 운영, QA 담당이 하나의 팀으로 협업하는 것
- 빠른 사용자 피드백 사이클을 통해 생산성 증가
- DevOps process
- Continuous delivery : 소규모로, 잘 설계된, 고품질의 소프트웨어
- Continuous Integration : 코드 수정을 Immutable한 이미지로 배포 - 만약 수정이 필요할 경우 해당 구성 요소 전체가 수정
- Continuous Deployment : 라이프사이클은 가능한 한 빠르게
- Continuous Monitoring : deploy 이전까지 어플리케이션의 가용성 등을 모니터
- 클라우드에서의 DevOps
- Provision, installation, documentation의 과정을 자동화
- Continuous Integration & Deployment
- Define how to collaborate
- low cost test
- recover from diseasters quickly
Application Modernization
- 레거시 시스템의 문제점 : 업데이트가 어려움, 유지 보수 비용이 높음
- Application Modernization : 새로운 서비스 적용이 쉽고, 변화에 빠르게 응답할 수 있음
- Application Modernization의 과정
- Architecture
- 과거 : 단일 구조로 개발
- 현재 : 서비스 지향 - 프론트엔드 / 백엔드 등
- 최근 : 마이크로서비스 - 매우 작은 단위로 프로그램 분할
- Infrastructure
- 과거 : 물리적 서버 사용
- 현재 : 가상 머신
- 최근 : 클라우드
- Delivery
- 과거 : 폭포형 - 장기적으로 계획, 개발, 테스트 순으로 진행
- 현재 : Agile 방법론
- 최근 : DevOps
- Architecture