개요

⇒ 클라우드 네이티브 기술은 조직이 Public, Private 그리고 Hybrid Cloud와 같은 동적인 환경에서 확장 가능한 애플리케이션을 개발하고 실행할 수 있도록 해주는 기술

⇒ Container, Micro Service, Service Mesh, Immutable Infra, Declarative API가 이러한 접근 방식의 예이며 이러한 기술은 회복성, 관리 편의성, 가시성을 갖춘 느슨하게 결합된 시스템을 가능하게 해주는 견고한 자동화 기능을 함께 사용하면엔지니어는 영향이 큰 변경을 최소한의 노력으로 자주 예측 가능하게 수행할 수 있다.

⇒ Cloud Native Computing Foundation은 벤더 중립적인 오픈 소스 프로젝트 생태계를 유지함으로서 위와 같은 패러다임 채택을 촉진해서 최신 기술 수준의 패턴을 대중화해서 이런 혁신을 누구나 접근 가능하도록 한다.

IT 서비스 개발 및 구현 방식의 변화

⇒ 개발 방식

DevOps/ DevSecOps

Agile/ Scrum

Kanban

Waterfall

Waterfall/Scrum/Fall

Lean

⇒ 애플리케이션 아키텍쳐

Monolithic : 하나로 개발

N-Tier

Microservices

⇒ Packaging

Physical Server

Virtual Server

Container

⇒ Infrastructure

직접 Data Center 구축

Hosted

Cloud

Cloud Native 적용 이유

⇒ 서비스 배포 시간 단축 : Containers + Microservice를 통해 개발 팀과 운영 팀 사이의 의사 소통 향상

  • 상호 이해폭 확대
  • DevOps 문화의 내재화 촉진
  • 조직 내 다양한 팀 간의 마찰 감소
  • 지속적인 적용(Continues Delivery)을 통한 빠른 배포가 가능(CI/CD)
  • 변경 프로세스의 복잡성 감소
  • 변경에 따른 인지된 위험 감소

⇒ 애플리케이션 및 서비스 현대화

  • 컨테이너로 애플리케이션을 배포하면 운영 인프라에 대한 종속성 감소
  • Kubernetes는 모든 인프라에 컨테이너를 배포할 수 있는 단일 통합 플랫폼을 제공

⇒ 신속한 신규 서비스 개발 사이클

  • 풍부한 기술 생태계
    대규모 커뮤니티
    Kubernetes 및 CNCF Slack에 많은 엔지니어들이 참여
  • 오픈 소스 기반
    풍부한 개발 인력 pool

⇒ 사업 성장을 위한 조직 문화 혁신 촉진

  • DevOps, CI/CD, Containerization은 서비스 개발 조직의 현대화 촉진

⇒ IT 목표

  • 민첩성과 생산성
  • 복원력과 확장성
  • 최적화와 효율성

⇒ 사업 성과

  • 시장 성장
  • 위험 완화
  • 비용 절감

Pillars of Cloud Native

⇒ DevOps

  • 애자일 방법론
    선형적 순서로 구성하는 워터폴 방식의 프로젝트 관리 기법의 단점을 보완하기 위해서 등장
    반복적인 개발 주기와 자기 조직화 팀을 강조하는 일련의 관행

    변화에 대응하는 것이 계획을 따르는 것보다 우선

  • DevOps 개요
    IT 서비스 설계, SW 개발, 릴리즈 및 운영에 이르기까지 전체 서비스 수명 주기에 함께 참여하는 IT 서비스 운영 및 개발 엔지니어의 업무 방식

    팀이 애플리케이션 개발에서 프로덕션 운영에 이르는 전체 프로세스를 소유하는 방법론

    일련의 기술 구현을 넘어 문화와 프로세스의 완전한 변화를 요구

    전체 기능이 아닌 작은 구성 요소에서 작업한느 엔지니어 그룹을 요구하여 일반적인 오류 소스인 핸드 오프를 줄인다.

    소프트웨어 개발 조직과 운영 조직간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것이 목적

  • Tool Chain

    PLAN : 목적을 수행하기 앞서 방법이나 절차 등을 미리 생각해서 계획

    CODE : 코드 개발 및 검토, 버전 관리 도구, 코드 병합

    BUILD : CI 도구를 사용해서 빌드

    TEST : TEST 도구를 이용해서 테스트를 자동화

    PACKAGE : 애플리케이션이 DEPLOY 되기 직전

    RELEASE : 변경 사항 관리, 릴리즈 승인, 릴리즈 자동화

    OPERATE : 인프라 스트럭쳐 구성 및 관리 - IaC(Infrastructure as Code) 도구

    MONITORING : 성능 모니터링, 사용자 경험

⇒ CI/CD

  • CI(지속적인 통합 - COntinuous Integration), CD(지속적인 서비스 제공 - Continuous Delivery, 지속적인 배포 - Continuous Deploy)
  • 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하기 위한 방법
  • 새로운 코드 통합으로 인한 개발 및 운영 팀에 발생하는 문제를 해결하기 위한 방법

⇒ Microservices

  • 애플리케이션을 상호 독립적인 최소 구성 요소로 분할
  • 모든 요소가 독립적으로 연동되어 태스크를 수행
  • 특징 높은 유지 관리 및 테스트 가능성 느슨한 결합 독립적으로 배포 가능 비즈니스 역량을 중심으로 구성 소규모 팀이 소유

⇒ Containers

  • 컨테이너는 실행에 필요한 모든 파일을 포함하여 전체 실행 환경에서 애플리케이션을 패키지화 하고 분리하는 기술
  • 컨테이너 파이프라인에 보안을 구축하고 인프라를 보호하여 컨테이너의 안정성과 확장성 및 신뢰성을 보장할 수 있다.
profile
클라우드로 안정적이게, 자동화로 더 편하게 — 개발자 김준태입니다.

0개의 댓글