728x90
Hybrid Multicloud

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
728x90

+ Recent posts