Cloud Native의 이해

김경민·2022년 5월 26일
1

Cloud Native, DevOps

목록 보기
1/10
post-custom-banner

  1. 가상화 기술 기본 개념의 이해
  2. 리눅스와 리눅스 파일 시스템 기본 구성
  3. Container의 개념
  4. Union file system에 대한 이해
  5. Docker의 개념과 아키텍처
  6. Docker 환경 운영을 위한 기본 개념
  7. 클라우드 기술 기본 개념의 이해
  8. Cloud Native란 무엇인가?
  9. Kubernetes와 MSA의 개념
  10. Kubernetes 아키텍처
  11. Kubernetes 환경 운영을 위한 기본 개념
  12. Kubernetes 기반의 Hybrid Multi-Cloud 이해

Cloud -> Cloud Native
B2C, iCloud, iPhone, Apple
Anytime, Anywhere, Share
B2B, 아마존, 공유경제, 에어비앤비, 우버, 점유권, 이용권

컴퓨팅 자원

  • 서버, 프로세싱
  • 스토리지, 저장

온디멘드, AWS

  • CSP: GCP, 네이버클라우드플랫폼, 애저, AWS VS MSP

24x365, AnyDevice, 미국 국립표준기술연구소 (NIST: National Institute of Standards and Technology)

클라우드란

  • 정의적: 미국 국립표준기술연구소 (NIST: National Institute of Standards and Technology)
  • 법률적: 정보통신, 네트워크
  • 실무적: 확장성(Scalable), 탄력적(Elastic), DR

Dev 개발 Sec 보안 Ops 운영 => CI/CD
FinOps 사용량만큼 비용청구, 가성비
DataOps 빅데이타, AI, 전처리, 정제, 마이닝

Scale-Up vs Scale-Out
Scale-Up, 용량을 키움
Scale-Out, 여러개로

https://aws.amazon.com/ko/solutions/case-studies/indischool/

AWS 고객사례 : 인디스쿨
14만 명의 회원을 보유하고 있는 인디스쿨은 초등학교 교사들이 자발적으로 참여하는 인터넷 커뮤니티입니다. 운영과 재정적인 지원은 모두 자원 봉사자와 기부를 통해 이루어지고 있어, 소수의 IT 인력으로 운영이 되고 있었습니다. 인디스쿨은 기존에 IDC에서 운영하던 모든 시스템을 AWS로 이전하고 Auto Scaling을 적용해 확장성 및 비용 절감 효과를 얻을 수 있었고, Elastic Load Balancing, Amazon RDS 등을 적용해 고가용성을 확보했습니다.

코로나19 백신 예약 시스템
Gate -> 큐 -> 인증 -> 예약
Scale Out

Gate -> 인증 -> 큐 -> 예약 -> DB, Block Chain 사상
-> 인증 -> 큐 -> 예약
-> 인증 -> 큐 -> 예약
-> 인증 -> 큐 -> 예약

Cloud Management Platform

사용량->AI->예측
Agile - Time To Market
Lean - Start up costs, 낭비되는 요소를 줄이자.​

  1. 낭비 제거(Eliminate waste) : 불필요한 코드/기능, 불분명한 요구사항(요구사항 혼란) 등 상품의 가치에 영향을 미치지 않는 모든 것을 제거

  2. 배움 증폭(Amplify Learning) : 개발 과정 진행 중 참여자(기획자, 개발자, 고객 등) 학습의 필요성 존재

  3. 늦은 결정(Defer Commitment) : 돌이키기 힘든 주요 문제에 대한 의사결정을 최대한 연기함으로써 요구사항변경에 적극적으로 대응

  4. 빠른 납품(Deliver Fast) : 결과물을 가능한 한 빨리 제공하는 것이 도움이 됨. 사용자의 불확실성이 감소하고, 개발자에게는 결함발견의 기회가 주어짐

  5. 팀에 권한 위임(Empower the Team) : 팀원들의 동기부여 및 자기 의사 결정권으로 잠재력 극대화

  6. 통합성 구축(Build Integrity in) : 개발 초기부터 지속적인 통합(TDD)으로 품질 향상. 소규모 개발 단계에서 오류를 수정하여 낭비를 제거

  7. 전체 최적화(Optimize the whole) : 사용자 요구사항수집부터 S/W 배포까지 모든 프로세스 최적화

TPS, 보틀넥(bottleneck)
설계 -> 제조 -> 납품
->피드백 ->피드백 ->피드백

Capex 자본 vs Opex 운영
구매방식, 자본증가
자산, 부채, 감가상각비용

손익계산서

매출이익 = 매출 - 매입
영업이익 = 매출이익 - 판매관리비(Opex), 영업이익이 줄면 세금이 줄어듬

국제회계기준16, 리스는 부채로 변경되어 클라우드로, IFRS 16 리스

클라우드장점

  • Pay-Per-Use, 저렴하지는 않음
  • 자동화
  • In demand(Flexibility + Scalability = Elasticity)
  • Shared Resources(Multi-Tenancy)

Cloud Computing Limitations

  • Internet Access
  • Security, Cyber Security Mesh, Identity, Zero Trust
  • Privacy
  • Vendor Lock-in

Structure - NIST

클라우드

  • On-Demand Self Service, 자동화 프로비져닝

가상화

  • 수작업

CSP (Cloud Service Provider)

MSP (Managed Service Provider)

Four Deployment Models

Private Cloud, 가상화 전제, 프로비저닝, 서비스단위로 한번에, 결재 후 대신 실행하는 것도 포함,

  • 폐쇄적인 구조로 운영
  • 자원 사용권이 내부(Internal)에 있는 것
  • 보안 측면이 퍼블릭 클라우드보다 강함

Out-sourced Private Cloud
On-site Private Cloud

Public Cloud

  • 이용자를 제한하지 않는 방식, 인증된 사용자
  • 사용자 간에 간섭이 없도록 관리, Multi-Tenancy

Hybrid Cloud

  • 여러 가지 클라우드 배치 모델의 조합(Private, Public 등)
  • 기능적 연동성, 회계관리시스템 <= 외부의 국제회계기준을 연동하여 사용
  • 자원적 공유성, Scale Out 등과 같이 Public 자원을 끌어다가 사용, Scale Up은 어려움
  • 기능의 분리, Public(네이버 대문 로그인)과 Private(네이버 로그인 후 메일, 카페 등)

Hybrid-Multi Cloud

  • Hybrid CSP 경계를 벗어나서 여러 CSP 를 넘나들음, 쿠버네티스
  • CSP에 대한 lock-in 이 깨짐, 플랫폼에 대한 독립성, Scale Up 에 대한 지원

Tree Service Models

Infrastructure as a Service, 물리자원, 가상자원, VM, infra
Platform as a Service, Infra + runtime
Software as a Service, all
X as Service
E as Service

Application Layer
Middleware Layer, 브라우저 등
Opperating System Layer

SaaS, 소프트웨어를 네트워크를 통하여 서비스 받음
PaaS
Iaas

AWS, cloud 신기술 많음
GCP, 모바일, AI 쪽이 많음
Oracle Cloud Platform, DB, DR, Big Data 쪽이 많음
MS-Azure, 오피스, RPA 주력
Naver Cloud Platform, 한글 Data 처리, 공공클라우드, api 개방성
Kakao Cloud Platform, 신규 진입

Watson for Oncology

IBM은 하드웨어 기반에서 클라우드 기반 소프트웨어 회사로 변신 중

Metavers 아키텍처, Meta, Digital 기술

  • AI, 의사결정, Dev
  • BigData, 분석, 예층, Dev
  • Cloud, 저장 + 처리, 컴퓨팅 자원, Ops, 중앙
  • IoT, 수집, Ops, 엣지

Cloud Native, Eco System

  • Dev, Ops 구분이 모호, 속도가 중요, Agile, TTM(Time To Market)
  • CNCF, 클라우드 표준
  • 컨테이너, 서비스 메쉬, 마이크로서비스, 불변(Immutable) 인프라, 선언형(Declarative) API
  • 회복성, 관리 편의성, 가시성을 갖춘 느슨하게 결합된 시스템, A <--api--> B, B가 없으도 A는 장애가 없도록, Kafka
  • Cloud Native Computing Foundation 에서 인증

Pillars of Cloud Native

  • DevOps
  • Microservices
  • Continuous Deilvery
  • Containers

Pillars of Cloud Native: DevOps

개발: 요구분석->설계->구현->테스트->적용
인프라: 도입->구축->검수
서비스: 개발 + 인프라

Pillars of Cloud Native: CI(Continuous Integration) / CD(Continuous Delivery)

  • CI(Continuous Integration), 지속적 통합, 더 빠른 오류 감지
  • CD(Continuous Delivery), 지속적 전달, 최종 사용자에게 소프트웨어를 더 빨리 제공
  • INTEGRATION -> DELIVERY -> DEPLOYMENT
  • deploy가 자동이냐 수동이냐에 따라 delivery 여부(수동) 결정

Pillars of Cloud Native: Containers

메인프레임, 중앙집중식, CS(Server Client) 체계

서비스 개발 vs 서비스 운영, 인프라가 아님

Agile, Software Driven Infrastructure
ITIL, Operational Stability, ITIL/ITSM, SLA

Agile and ITIL ( IT Infrastructure Library)

Agile manifesto

  • 개인과 개인 간의 상호작용이 프로세스 및 툴보다 우선
  • 작동하는 소프트웨어가 포괄적인 문서보다 우선
  • 고객과의 협업이 계약 협상보다 우선
  • 변화에 대응하는 것이 계획을 따르는 것보다 우선

DevOps

  • 기술이 아닌 철학
  • 변경이 아닌 변화

CALMS Framework: Culture, Automation, Lean, Measurement, Sharing

DevOps Tool Chain
계획, 코드, 빌드, 테스트, 패키지, 릴리스, 구성, 모니터링

DevOps 이점

  • Agile, Delivery, Reliability, Scale, Collaboration, Security

Dev = CI ( Continuous Integration, 지속적인 통합 )
Ops = CD ( Continuous Delivery and Continuous Deploy )​

Container, 가상화 ( virtualization )

  • 추상화 ( Abstraction )

가상화 기술, 호스트 가상화, 하이퍼바이저 가상화, 컨테이너 가상화

  • Hypervisor 용어가 Supervisor로부터 파생됨
  • 전가상화 ( Full Virtualization )
  • 반가상화 ( Paravirtualization )

가상화, 나눠쓰기

가상머신과 컨테이너

리눅스 파일 시스템

  • 마운트(mount)
  • 커널(Kernel)

LXC(Linux Container)
namespaces, 프로세스를 독립시켜주는 가상화 기술
cgroup(control groups), H/W, process
docker, libcontainer, libvirt, LXC, systemd-nspawn

OS(system) Containers vs App Containers

Container
Union File System(UFS)에 대한 이해

Union Mount

  • 복수의 파일시스템을 하나의 파일시스템으로 마운트하는 기능​

Union File System
UFS는 여러 개의 파일 시스템을 하나의 파일 시스템에 마운트 하는 파일 시스템 개념​

Docker의 개념과 아키텍처

  • Docker는 LXC(Linux Container)에서 사용하는 리눅스 커널 컨테이너 기술을 이용해 만든 컨테이너 관리 유틸리티
  • 리눅스 컨테이너 구현체의 사실상(de-facto) 업계 표준이 됨
  • 2010 Founded as dotCloud -> Red Hat -> mobyproject.org -> Docker

HW -> 커널 -> 컨테이너 -> 도커 API

  • Docker 는 UnionFS를 사용하여 Docker 이미지를 계층화
  • Docker 는 overlayFS 사용

Docker Storage Drivers

  • overlay2
  • Aufs(advanced multi-layered unification filesystem)

docker file -> docker build -> docker pull -> docker run
container -> image layers / read only, 변경불가

Container OS'es

  • CoreOS

Container 기술의 표준화

런타임(Run Time)

compile time -> run time, 고수준 런타임, 저수준 런타임 runC

Client - Docker Engine - Containerd - Container - runC - daemon process​

Kubernetes and Docker / Containerd / CRI-O

  • kubernetes 에서 dockershim으로 변환하는데 비효율
  • 21년도 하반기 Kubernetes 부터는 docker 를 container runtime 으로 활용할 수 없음

pure, 오픈소스 원래 코드만
openstack
Docker Architecture
Client - Docker Host - Registry

Docker Components

  • Docker Software
  • Docker objects
  • Registries

Docker Hub
Docker Tools

  • Docker Compose
  • Docker Swarm

Dev - QA - PRD

컨테이너 기술 적용 사례

  • Development, CI/CD/DevOps, Operations, Refactor Legacy Apps, Migrate to Cloud, New Microservice Apps

Micro Servuces Architecture (MSA)
MSA의 개념 이해
해시캐시
blockchain

POW (Proof of Work)
POS (Proof of Stake)

쿠버네티스, 서비스 메시(Service Mesh)
Monolithic 모놀리식

Services Oriented Architecture ( SOA ) VS Mircroservices Architecture ( MSA )

  • CI/CD 존재 여부, 자동화
  • isolated, independently

Twelve Factor App 이 충족되어야 마이크로서비스(MSA)

The Twelve Factors

I. 코드베이스

  • 버전 관리되는 하나의 코드베이스와 다양한 배포
    II. 종속성
  • 명시적으로 선언되고 분리된 종속성
    III. 설정
  • 환경(environment)에 저장된 설정
    IV. 백엔드 서비스
  • 백엔드 서비스를 연결된 리소스로 취급
    V. 빌드, 릴리즈, 실행
  • 철저하게 분리된 빌드와 실행 단계
    VI. 프로세스
  • 애플리케이션을 하나 혹은 여러개의 무상태(stateless) 프로세스로 실행
    VII. 포트 바인딩
  • 포트 바인딩을 사용해서 서비스를 공개함
    VIII. 동시성(Concurrency)
  • 프로세스 모델을 사용한 확장
    IX. 폐기 가능(Disposability)
  • 빠른 시작과 그레이스풀 셧다운(graceful shutdown)을 통한 안정성 극대화
    X. 개발/프로덕션환경 일치
  • 개발, 스테이징, 프로덕션 환경을 최대한 비슷하게 유지
    XI. 로그
  • 로그를 이벤트 스트림으로 취급
    XII. Admin 프로세스
  • admin/maintenance 작업을 일회성 프로세스로 실행

MSA, Container and Kubernetes

Kubernetes, 스케줄링(컨테이너 배포)과 클라우드 환경을 지원하는 오픈소스 플랫폼​

메소스피어(mesosphere)

Kubernetes Architecture, k8s

  • 컨테이너화된 앱의 오케스트레이터
  • scaling, self-healing, load-balancing, rolling updates​

Kubernetes 기능

  • 서비스 디스커버리와 로드 밸런싱
  • 스토리지 오케스트레이션
  • 자동화된 롤아웃과 롤백 쿠버네티스
  • 쿠버네티스 클러스터 노드
  • 자동화된 복구
  • 시크릿과 구성 관리

Kubernetes vs Docker Swarm

  • auto scalling 여부

Kubernetes vs Datacenter OS (DCOS)

  • DC/OS는 Data Center와 같이 대규모 서버 환경을 하나의 OS처럼 관리 목적으로 개발
  • 유연한 공유 ( Elastic sharing )
  • Mesos

Kubernetes 환경 운영을 위한 기본 개념

Kubernetes Components

  • API server, Cloud controller manager, Controller manager, etcd, kubelet, kube-proxy, Scheduler, Control plane, Node(Pod의 집합)

  • 클러스터
  • 컨트롤플레인(Control Plane, Master)
  • 노드(워크노드, Worknode)
  • Pod(파드), 배포, deploy, CI/CD
  • Deployment(배포), Pod, Replicaset​

Container -> Pod -> Node -> Cluster, Control Plane(Master)
Node부터 Replicaset 배포 가능

Masters ( Control Plane )

  • 단일 호스트 마스터 vs 다중 호스트 HA 마스터
  • 마스터에서 애플리케이션 워크로드를 실행하지 않음

Masters ( Control Plane ) Components

  • API 서버
  • Etcd
  • 컨트롤러 매니저
  • 스케쥴러

Node Components

  • 프록시
  • Kubelet
  • cAdvisor

Kubernetes Runtime

  • Containerd
  • CRI-O
  • Docker (1.2부터 지원 중단 예정)

Pods Anatomy

  • Ring-fenced environment
  • One or more containers

Pods Tightly Coupled vs Pods Loosely Coupled

Pods and Scaling

Pod Lifecycle

Deploying Pods

  • 포드를 직접 배포하지 않음.

ReplicaSets(RS) and Deployment
kubectl apply -f test-replicatset.yaml
kubectl get replicaset,pods
kubectl delete pod test-replicaset-xgggb
kubectl get replicaset,pods

Deployments, 배포

  • ReplicaSet 위에 배포

Multiple concurrent versions

  • Blue-green deployments
    -- Green deployments
    -- Blue deployments
  • Canary releases

K8S Services

  • Pod 집합에 안정적인 DNS, IP 주소 제공

Connecting Pods to Services

K8S - 운영 모델

Declarative Model vs Imperative Model

The Declarative Model and Desired State

Kubernetes 기반의 Hybrid Multi-Cloud 이해

Pod를 Google, Oracle, Alibaba, BareMetal, Amazon, AZURE, Edge Cloud, Vmware 등 다양하게 위치시킴

Hybrid Multi-Cloud K8S

Hybrid Multi-Cloud Architecture

엣지 클라우드 ( 분산형 클라우드 ), Edge Cloud

post-custom-banner

0개의 댓글