What is Cloud-native - DevOps, MSA and Cloud-native: Openshift 활용을 위한 Application의 준비, Cloud Native
*웨비나 다시보기 영상 바로가기:
https://www.youtube.com/watch?v=tzSBS-vki6w
1
OpenShift 활용을 위한 Application의 준비, Cloud Native
What is Cloud-Native
Jong Jin Lim (jonlim@redhat.com)
Solution Architect
RedHatOpenShiftContainerPlatform
People : RE-ORG TO DEVOPS
DevOps
8
As-Is
현
업
설
계
개
발
개발팀
구축요
청
사용
자
매니
저
운
영
운영팀
CSR
운영이관
App7 App2 App2
App5
App7
개발자와
운영자간의
사상차이 존재
As-Is
현
업
DevOps
리더
개발/배
포
DevOps 조직
구축요
청
사용
자
CSR
App1
기
운영
Squad A Squad B
C D E
대규모 구축/App 운영
Core
Engineer
DevOps Ready
Developer
MSA
MSA
대규모 구축 후 운영 시
DevOps팀 단위로의 운영을
위한 분리된 형태의
아키텍쳐가 요구됨
Process : PROCESS의 변화 예시
DevOps
9
DevOps Governance 프레임워크
DevOps 거버넌스 관리 인프라
DevOps 거버넌스 운영체계
DevOps 거버넌스 관리 프로세스
서비스 기획
및 투자
서비스
모델링
서비스
개발
서비스
운영
서비스
평가
서비스 기획 및 투자
DevOps 관리 정책 및 전략
의사결정 그룹
리더 그룹
기회관리 그룹
실행 그룹
비즈니스 전략 및 목표관리
서비스 총괄 조정 센터
서비스 발견 및 기회관리
서비스 구현 및 제공 정보 관리
서비스 모델
관리 인프라
서비스 라이프사이클
관리 인프라
▪ 비즈니스와 IT 리더들로 구성된 의사결정 협의체 중심으로 운영
▪ 서비스를 계획하고 계획된 서비스의 오너 식별 및투자예산 등을 결정하는 Task로 구성
서비스 모델링
▪ 실행그룹 중심으로 운영
▪ 계획된 서비스 유형을 정의하여 서비스를 식별
▪ 식별된 서비스의 스펙 작성, 서비스 Realize 하는 Task로 구성
서비스 개발
▪ 실행그룹 중심으로 운영
▪ PaaS에서 구현될 마이크로서비스를설계, 개발, 테스트하는Task로 구성
서비스 운영
▪ 실행그룹 중심으로 운영
▪ 개발된 마이크로서비스에대한 운영 계획을 수립
▪ 운영 계획을 기반으로 서비스 배포, 보안관리, 모니터링을 수행하는 Task로 구성
서비스 평가
▪ 리더 및 기회관리 그룹 중심으로 운영
▪ 운영되는 서비스의 재사용성, 투자대비 성과 등을 서비스 계획 시에 정의된 지표를 통하여
평가하는 Task로 구성
빌드 환경
Build/Unit
Test
소스 관리
Branch
Tag
티켓 관리
Commit,
Test, Build
상황 관리
테스트 환경
통합
테스트
사용자
테스트
배포 환경
Technology : 지속적인 통합 및 배포(CI/CD)
DevOps with Container
10
DEVELOPER
Development
커밋 반영
테스트
결과 반영
확인 및
배포
Stage
소스 관리
빌드
테스트
배포
Production
소스 관리
빌드
테스트
배포
OERATIONS
국내 은행 멀티클라우드 DevOps
DevOps with Container
11
Binary Build
개발 OCP
Image Build & Push
Private Docker
Registry
Project
Developer
Dependenciesmaster prod
Resource Build
Pod
Pod
CI/CD Pipeline
형상관리
Image Build & PushResource Build
master release
CI/CD Pipeline
운영 OCP
Private Docker
Registry
Project
Pod
Pod
개발환경 (Azure Stack) 운영환경 (AWS)
SCM Repository
Manager
Pod
SCM
18
MICROSERVICE SYSTEM에 필요한 요소
BUILD DEPLOYMENT NETWORK PERSISTENCE ISOLATION
FAULT
TOLERANCE
OBSERVABILITY
SERVICE
SECURITY
CHAOS
ENGINEERING
TRAFFIC
CONTROL
LOGS MONITORING
INFRA
SECURITY
RELEASE
MANAGEMENT
LOAD
BALANCING
DEPLOYMENT
RESILIENCE
SERVICE
DISCOVERY
CONFIG
MANAGEMENT
RESOURCE
MANAGEMENT
ELASTICITY
INFRA
INFRA OPS
SERVICE OPS
SERVICE
Micro Services Architecture
19
MICROSERVICE SYSTEM with NETFLIX OSS
INFRA
INFRA OPS
SERVICE OPS
SERVICE
Spring Cloud
Config Server
Netflix Eureka
Netflix Zuul
Server
ZipKin Server
Service Service Service
Tracing
Circuit Breaker
Routing
Svc Discovery
Config
Tracing
Circuit Breaker
Routing
Svc Discovery
Config
Tracing
Circuit Breaker
Routing
Svc Discovery
Config
Netflix Ribbon
Netflix Hystrix
Netflix Turbine
Physical Virtual Cloud
Micro Services Architecture
NETFLIX OSS를 이용한 MSA 운영의 한계
20
비즈니스 로직에 집중할 수 없는
MSA with Netflix OSS 환경
✖ 지속적인 업그레이드 및 수정이 필요한 Library
✖ 이식을 위해 Application 로직 수정 필요
✖ Java 관련 언어만을 지원
Service
Configuration
Service Discovery
Routing
Circuit Breaker
Tracing
Micro Services Architecture
NETFLIX OSS를 이용한 MSA 운영의 한계
21
Properties 관리
Code 관리
Dependency 관리
Micro Service
개수 만큼 구성 관리
x 10
x 100
x 1000
Micro Services Architecture
SERVICE DISCOVERY / SERVICE MESH
23
Micro Service Side Car
OpenShift Container Platform
Build Automation ⁞ Logs ⁞ Monitoring ⁞ Infra Security ⁞ CI/CD ⁞ Load Balancing Deployment Resiliency ⁞ Service Discovery ⁞ Config ⁞ Resource
Management ⁞ Elasticity
Red Hat Service Mesh
Logic 개발이 필요없는 MicroService Architecture 관리 기능
Observe Observe
Secure
ControlConnect
Jaeger
Kiali
Prometheus
Istio
Grafana
RED HAT SERVICE MESH
Red Hat Service Mesh
ISTIO를 이용한 SERVICE MESH ARCHITECTURE
25
POD
ENVOY
SERVICE
POD
ENVOY
SERVICE
POD
ENVOY
SERVICE
Pilot Mixer CitadelJaeger
● Pod 수준에서 보안, 경로 규칙, 정책 및
트래픽 리포팅, 원격 분석을 적용합니다.
● Application 로직과 분리되어 소스 수정이
필요 없습니다.
● Java 뿐 아니라 여러 언어를 지원합니다.
Red Hat Service Mesh
Control
Plane
WHAT IS ISTIO?
마이크로 서비스를 연결, 관리 및 보호하는 서비스 메시
Pilot Mixer Citadel
Data
Plane
Pod
Envoy
App
Pod
Envoy
App
Pod
Envoy
App
Pod
Envoy
App
Jaeger
모든 구성 요소가
K8S 관리하에
동작
Red Hat Service Mesh
ISTIO 없이 Circuit Breaker 구현을 한다면
App App AppCB CB
코드와 함께 서비스 연결을 구현
Red Hat Service Mesh
Pod
ISTIO 로 Circuit Breaker 구현을 한다면
App
서비스의 코드와 관계 없이 구현
Envoy
Pod
App
Envoy
Pod
App
Envoy
Red Hat Service Mesh
Pod
ISTIO가 구현하는 대표적 기능
App
Envoy
Pod
App
Envoy
서킷 브레이커
타임아웃과 재시도
유입량 조절
보안 설정
동적 라우팅
Red Hat Service Mesh
주요 기능
● Managed ISTIO 버전 제공
● OCP 콘솔에서 직접 링크
● 레이블링 된 HAProxy가 라우팅
● Kiali의 UI프레임웍 (Patternfly4)
● Kafka를 통한 Jaeger 스트리밍 지원
● Jaeger를 외부 Elasticsearch 연결 허용
RED HAT SERVICE MESH
Red Hat Service Mesh
What's new in OpenShift 4.4
31
RED HAT SERVICE MESH
Red Hat Service Mesh
What's new in OpenShift 4.4
32
RED HAT SERVICE MESH
Red Hat Service Mesh
OPENSHIFT와 ISTIO를 이용한 쉬운 SERVICE MESH 구현
33
Physical Virtual Cloud
SERVICE
SERVICE OPS
INFRA OPS
INFRA
OPENSHIFT
THE ENTERPRISE KUBERNETES
Build Automation ⁞ Logs ⁞ Monitoring ⁞ Infra Security ⁞ CI/CD ⁞ Load Balancing Deployment Resiliency ⁞
Service Discovery ⁞ Config ⁞ Resource Management ⁞ Elasticity
ISTIO SERVICE MESH
Load Balancing ⁞ Fault Tolerance ⁞ Traceability ⁞ Observability ⁞ Service Security ⁞ Infra Security ⁞ Chaos Engineering ⁞ Traffic Control
Red Hat Service Mesh
34
Support services
> Smart routing
> API management
> Caching service
> Configuration
> Messaging
> SSO
> Registry
Application logic
> Client-side load balancing
> Service registration
> Circuit breaker
> Distributed tracing
Application logic
> Client-side load balancing
> Circuit breaker
Support services
> Distributed tracing
> API management
> Caching service
> Messaging
> SSO
> Registry
> Configuration
> Server-side load balancing
Support services
> API management
> Caching service
> Messaging
> SSO
Application logic
> Registry
> Configuration
> Server-side load balancing
> Client-side load balancing
> Distributed tracing
> Circuit breaker
> Fault injection
2014 current next
MSA MANAGEMENT JOURNEY
Red Hat Service Mesh
개발환경은 변화 중…
Accelerating Cloud-Native Development | Workspaces
36
로컬 데스크탑, 단일 언어 및 사용자 정의 프로세스에서 ...
다양한 언어를
기반으로
컨테이너
친화적으로
하이브리드
클라우드로
Source:
Cloud Development Survey 2017 - Evans Data Corp
빠르게 변화하는 개발 환경
Accelerating Cloud-Native Development | Workspaces
37
Moving to the Cloud
90%
향후 3 년 내에 개발은 클라우드
환경에서
진행될 것으로 예상하고 있습니다.
Adopting Containers
66%
이미 기업들은 컨테이너 환경에서
개발하고
테스트하고 운영하고 있습니다.
그리고 눈앞의 걸림돌…
Accelerating Cloud-Native Development | Workspaces
38
Config and Setup
24%
개발팀은 주중에 빌드와 개발환경 구성관리에
상당 시간을 할애합니다.
Dev Tool Integration
41%
기업들은 개발 툴의 통합과 컨테이너를 위한
프로세스 관리에 시간을 낭비합니다.
OPENSHIFT = DEVOPS & MSA PLATFORM
Accelerating Cloud-Native Development
39
SERVICE CATALOG
(LANGUAGE RUNTIMES, MIDDLEWARE, DATABASES, …)
SELF-SERVICE
APPLICATION LIFECYCLE MANAGEMENT
(CI / CD)
BUILD AUTOMATION DEPLOYMENT AUTOMATION
CONTAINER CONTAINERCONTAINER CONTAINER CONTAINER
NETWORKING SECURITYSTORAGE REGISTRY
LOGS &
METRICS
ATOMIC HOST /
RED HAT ENTERPRISE LINUX
OCI CONTAINER RUNTIME & PACKAGING
INFRASTRUCTURE AUTOMATION & COCKPIT
● 개발 및 운영을 위한 다양한 툴 제공(IDE, UX
등)
● 전통적인 WEB/WAS, 최신의 MSA 및
Serverless 아키텍처를 위한 다양한 application
runtimes & services 제공
● Auto-Healing으로 Application HA 기능 제공
● Auto-Scaling으로 과부하 대비 기능 제공
● 쿠버네티스 기반의 컨테이너 오케스트레이션
● OCI 표준 컨테이너
● 컨테이너 최적화 OS 기반 – Red Hat
Enterprise Linux/Atomic Host
● 하이브리드 클라우드 환경에 설치(Bare-Metal,
다양한 VM, Public/Private IaaS 등)
OpenShift
Physical Virtual Private Public
로컬 환경을 위한 KUBERNETES
Accelerating Cloud-Native Development | Developer Environment
40
CodeReady
Container
왜 개발자에게 컨테이너 개발 환경이 필요할까요
Accelerating Cloud-Native Development | Developer Environment
41
Developers
BUILD
TEST
Stage. & Prod.
CONTAINER
컨테이너를 위한 빌드방식의 검증이 필요합니다.
컨테이너 플랫폼 환경이 개발자환경과 달라
다른 방식의 테스트와 검증법이 필요합니다.
CONTAINER
Developers Stage. & Prod.
CONTAINER
이미 컨테이너 빌드/배포에 대한 전략을 갖추고 있습니다.
스테이지/운영 환경이 개발단계에서 수행되는
테스트와 검증 방식과 동일합니다.
BUILD
TEST
왜 개발자에게 컨테이너 개발 환경이 필요할까요
Accelerating Cloud-Native Development | Developer Environment
42
호환되는 환경
Accelerating Cloud-Native Development | Developer Environment
43
no-cost Red Hat Enterprise Linux®
Developer Subscription
CodeReady
Container
GA & Support
클라우드를 위한 IDE
Accelerating Cloud-Native Development | Workspaces
45
Workspaces
클라우드를 위한 IDE의 가치
Accelerating Cloud-Native Development | Workspaces
46
프로젝트 개발을
가속화 하고 개발자
온보딩을 돕습니다.
컨테이너화 되는 어플리케이션을 쉽게 개발하세요!
불일치성을 제거합니다.
"제 PC에서는
잘되는데요? " 같은…
보안성을 높이기 어려운
로컬환경에 더 이상
코드는 없습니다.
데스크탑 환경에 갇힌 일관성과 보안
Accelerating Cloud-Native Development | Workspaces
47
데스크탑 IDE 환경 관리
IDE Runtime
(Local process or container)
Project Files
테스트/스테이지/운영
환경 관리와 가이드
개발자가 관여해야하는 영역
Development
IDE Runtime
(Local process or container)
Project Files
개발자 영역
Development
개인 개발자 작업 영역 할당과 중앙
호스팅
제공되는 환경
ECLIPSE CHE / CODE READY WORKSPACES
데스크탑 환경에 갇힌 일관성과 보안
Accelerating Cloud-Native Development | Workspaces
48