SlideShare a Scribd company logo
1 of 37
Download to read offline
2018.11
김영기 수석
resious@gmail.com
Microservices
2
Contents
1 마이크로서비스의 정의
0 Warm-up
3 마이크로서비스 사용 이유 및 문제점
4 마이크로서비스의 통합 및 통신
2 마이크로서비스의 구조
5 마이크로서비스 개발 환경 및 테스트
6 MSA 사례
3
Infrastructure Evolution
 IT 인프라스트럭처의 진화
Electronic accounting
machine
1930 ~ 1950
 데이터 처리를 위한 크고 복잡한 컴퓨터 사용
 하드 와이어드 소프트웨어
General-Purpose
Mainframe and
minicomputer
1950 ~ 현재
 1958: IBM 메인프레임
 1965: DEC 미니컴
Personal computer 1981 ~ 현재
 1981: IBM PC
 80~90년대 PC 및 SW 급증
Client Server 1983 ~ 현재
 서버와 클라이언트의 네트워킹을 통한 작업 분할
 N-tier
 다양한 유형의 서버: 네트워크, 애플리케이션, Web
Enterprise Internet 1992 ~ 현재
 분산 네트워크
 인터넷 표준 및 엔터프라이즈 애플리케이션
Cloud and mobile
computing
2000 ~ 현재
 컴퓨팅 및 애플리케이션이 인터넷이나 네트워크를
통해 제공
 가장 빠르게 증가하는 컴퓨팅 형태
4
Software Development Methodology
 Waterfall  Agile  DevOps
Waterfall
Agile
DevOps
Analysis Development Build Test Deployment
DEV QA OPS
Test Deployment
DEV QA OPS
A D B A D B A D B
Sprint Sprint Sprint
A D B T D
Sprint
DEV/QA/OPS
A D B T D
Sprint
DEV/QA/OPS
A D B T D
Sprint
DEV/QA/OPS
5
Prolog - History
Innovation
1985 1995 2005 2015 2025
OO application
(offline, monolith)
Online systems
(offline, monolith)
Distributed systems
(distributed monolith)
Microservices Technology X
Challenge:
Reaching customers
(diskettes, CDs)
Challenge:
Scaling
Performance
Challenge:
Zero downtime
Upgrade
Challenge:
Comprehension
Monolith
Single unit
SOQ
Coarse-grained
Microservices
Fine-grained
6
Prolog - AOP
AOP(Aspect Oriented Programming)은 기능을 핵심 비즈니스 로직과 공통 모듈로 구분하고, 핵심
로직에 영향을 주지 않으면서 로직 사이 사이에 공통 모듈을 효과적으로 삽입해 개발하는 방법이다.
코드 외부에서 공통 모듈을 만든 후, 공통 모듈을 비즈니스 로직에 삽입하는 것이 핵심이다.
OOP AOP
로깅 기능
보안 기능
트랜잭션
오류 처리
통계 처리
로깅 기능 호출 로깅 기능 호출
보안 기능 호출 보안 기능 호출
트랜잭션 호출 트랜잭션 호출
트랜잭션 호출 트랜잭션 호출
추상화
로깅 기능
보안 기능
트랜잭션
오류 처리
통계 처리
Application
Primary
Concern
Cross-Cutting
Concern
Application
Primary
Concern
Code
Aspect
Point-cut
Cross-Cutting
Concern
Advise
Primary(Core) Concern: 비즈니스 로직을 구현한 부분
Cross-Cutting Concern: 부가적인 기능으로 시스템 전반에 산재되어 사용되는 기능
Code: primary Concenㅇ르 구현해 놓은 코드
Join Point: 횡단 관심 모듈 기능이 삽입되어 동작할 수 있는 실행 가능한 특정 위치
Point-Cut: 어느 클래스의 Join Point를 사용할 것인지 결정하는 선택 기능
Advise: 각 Join-Point에 삽입되어 동작할 수 있는 코드
7
Prolog - SOA
 Service Oriented Architecture …
 서비스 요청자(Client)와 제공자로 이루어진 애플리케이션 설계 방식
 표준 기반의 공통 모듈(재사용)로 가능한 서비스들을 느슨한 관계 모델링을 통해
소프트웨어의 서비스화를 지향하는 아키텍처
Service Orientation Architecture
 Open 된 상호 호환성을 갖는 프로토콜을 사용
 애플리케이션 서비스 Description과 이를 지원하는 Dynamic
Discovery 시스템을 통해 조합 가능한 환경
 전체적인 목표를 달성하기 위해 컴포넌트를 조합하는 프로세
스
 Layer에 의해 구성되는 컴포넌트들을 통해 이루어지는
Blueprint로 컴포넌트간 특성 및 관계, 상호작용, 제약 사항을
포함
Service
Consumer
Service
Provider
Service
Broker
Find Register
Bind
Message
Client Service
Service
Contract
자기 설명적인 인터페이스를 가진
서비스는 플랫폼 독립적인 XML 형식으
로 정의되어, Service Broker를 통해
서비스로 등록되고 관리되며,
애플리케이션이 증가해도 서비스를 찾을
수 있는 방법이 제공된다.
8
Prolog - Service
 서비스
 논리적으로 하나의 단위를 이루는 업무를 자체적으로 처리할 수 있는 SW 컴포넌트
 플랫폼 독립적, 동적 검색 및 호출, Self-contained
 비즈니스 업무의 논리 단위를 구현한 것으로, 개방형 인터페이스로 설계되어 다른
서비스에서 접근이 가능한 소프트웨어 컴포넌트
Service Implementation
 실제 서비스 처리
Service Interface
 Request를 받아들임
 결과를 반환
Infrastructure
Service
Existing
Application
External
Services
Existing
Application
Service
Wrapper
Service
Wrapper
Coarse Grained Business
Service
(Business Service Bus)
Aggregation
Fine Grained
Implementation-Based
Service
추상화
9
마이크로서비스의 정의
10
Monolithic Architecture vs. MSA
11
Microservices - Definition
 Microservices is …
A software architecture style in which complex applications are composed of small, Independent process
communicating with each other using language-agnostic APIs.
These services are small, highly decupled and focus on doing a small task, facilitating a modular approach
to system-build - Wikipedia
서비스 디자인 스타일로서 작은 서비스의 결합을 통해 하나의 응용프로그램을 개발하는 방법으로, 각각의 서비스는
독립적인 로직으로 구성되며, 완전히 자동화 된 개발/배포환경에 의해 각각 독립적으로 배포될 수 있다. 최소한의
중심적인 관리 체계가 있으며, 이 시스템은 각각 다른 프로그래밍 언어, 다른 데이터 스토리지 기술로 작성이 가능하
다. - Martin Fowler at ThoughWorks
Data Store
Public API
Software Modules: Application code, libraries, …
Microservices = Fine-grained service-oriented architecture + “small” public API
Microservice
12
Microservices – Pros, & Cons.
Data
Business Logic
Web
Monolithic Design Microservices Design
Http Listener Page Content
ReportingOrder ManagementUsage Analytics
AuthenticationOrderSearching
Monolithic Style Microservices
Single Unit with all components interwoven Applications are suite of service
Overall Scaling of the structure required Each service independently scalable
Overall deployment Independently deployable
Increases complexity for developers More developer friendly
One errant component crashes the whole system Fault diagnosis and isolation is easier
Testing is streamlined Difficult to test
13
Microservices - Size
 마이크로서비스의 크기에 영향을 주는 요소들
마이크로서비스의
이상적인 크기 ?
팀 크기 (조직 구조)
모듈화
교체 가능성
트랜잭션과 일관성
인프라스트럭처
분산 통신
마이크로서비스는 여러 팀의 작업이 필요한 만큼 커져서는 안된다
팀들은 독립적으로 작업하고 소프트웨어를 출시 할 수 있어야 한다
개발자가 이해하고 추가적인 개발을 허용하는 크기가 좋다
교체 가능성은 마이크로서비스의 크기를 감소시킨다
트랜잭션과 일관성은 하나의 마이크로서비스에서만 보장된다
필요한 인프라 제공이 힘든 경우, 마이크로서비스의 개수가 제한된다
마이크로서비스가 증가하면 분산 통신이 증가한다
14
Microservices – Organization: Conway’s law
Organizations which design system (in the board sense used here) are
constrained to produce design which are copies of the communications
structures of these organizations
- Melvin Conway, Datamation, 1968
15
Microservices – Most Important thing!
 Only rely on each other’s public API
 모든 팀은 서비스 인터페이스를 통해 자신들의 데이터와 기능을 노출한다
 팀들은 반드시 인터페이스를 통해 서로 통신한다
 모든 서비스 인터페이스는 예외 없이 처음부터 노출이 가능하도록 설계되어야 한다
Microservice A Microservice B
16
마이크로서비스의 구조
17
MSA
 Microservices Architecture
 서비스를 기능별로 작게 분할한 서버 아키텍처의 디자인 패턴
 Inner Architecture – 개발 마이크로서비스의 아키텍처
 Outer Architecture – 마이크로서비스로 구성된 시스템의 아키텍처
미시적 관점 거시적 관점
Inner Architecture Outer Architecture
• Single Purpose
• Loosely coupled
• Independently
deployable
• Independently
disposable
• Focused Business
Capabilities
• Decentralized Data
Management
• Heterogeneous
Technology
• Logging & Monitoring
• Stateless
• Managed APIs
• Expose services
• Route messages
• Asynchronous
communication
• Load Balancing
• Service Discovery
• Shared Configuration
• Dependency
management
• Transaction Analysis
• Logging & Monitoring
18
Microservices - Implementation
 MSA 구현
 일반적으로 아래와 같은 4단계를 거침
기능별로 서비스
애플리케이션 분리
서비스 이미지 개발
클라이언트에서
필요한 서비스 선택
인스턴스
선택 및 관리1 2 3 4
하나의 서비스는
한 가지 일에 초점을 맞춘다
각 서비스는 적절한 자원을
제공 받아야 하며, 배포가 빠
르고 효율적이어야 한다
너무 많은 요청은
비효율적이며, 클라이언트 코
드가 복잡해진다
서비스 = Σ 가상화 인스턴스
서비스 검색 패턴을
정의해야 한다
 서버마다 전체 서비스 실행
 서비스를 VM에서 실행
 서비스를 컨테이너에서 실행
 API Gateway
- 비동기/논블로킹 I/O
 IPC
- 동기(메시지 기반)
- 비동기(Request)  Client Side Discovery Pattern
 Server Side Discovery Pattern
- 로드 밸런서가 존재
하나의 서비스는 여러 인스턴스로
실행되고, 인스턴스들의 IP가 변함
Service Discovery
가용 인스턴스
목록 관리
19
20
마이크로서비스 사용 이유 및 문제점
21
Microservices - Benefits
 마이크로서비스 사용 시 혜택
기술 측면 조직 측면 비즈니스 측면
 교체 가능성
 지속 가능한 개발
 레거시 처리
 지속적인 통합 활용
 확장성
 견고성
 자유로운 기술 선택
 독립성
 팀의 독립성
 자기 조직화
 소규모 프로젝트
 병렬 기능 개발
 애자일 프로세스의 확장
 과도한 조정이나 소통을 요구하지
않음
모놀리식 개발 수명주기 마이크로서비스 개발 수명주기
개발자 App 전달 파이프라인
빌드 테스트 출시
빌드 테스트 출시
빌드 테스트 출시
빌드 테스트 출시
개발자 서비스 전달 파이프라인
22
Microservices – Challenges
 마이크로서비스 개발 시 고려사항
장애진단 다양한 기술에 대한 표준 관리 API를 통한 통신  성능 문제
상이한 설정 및 기동 방법 테스팅 팀 역량에 따른 일정 및 품질 문제
모니터링 트랜잭션 관리 서비스 조정
23
마이크로서비스의 통합 및 통신
24
Microservice Architecture
25
API Gateway
 API Gateway
 요청에 따라 필요한 서비스로 라우팅
 많은 요청을 처리하기 위해, 비동기 및 논블락킹 기반으로 설계
 API Gateway 장애 발생 시 서비스 전체가 다운
 API Gateway는 로드밸런싱, 캐싱, 모니터링 등 다양한 기능을 가질 수 있음
 병목 지점이 될 가능성이 있다.
26
IPC
 Inter-Process Communication
 마이크로서비스 시스템 = 분산 시스템
 서비스 간 통신이 필요(1:1, 1:N)
 IPC 기술
 동기 요청/응답 기반 : REST, …
 비동기 메시지 기반 : AMQP, …
 데이터 포맷
 텍스트 기반 : JSON, XML, …
 바이너리 : Protocol Buffers, …
1:1 1:N
Synchronous Request/response -
Asynchronous
Notification
Request/async response
Publish/subscribe
Publish/async response
Channel
메시징 시스템이 필요
27
Service Discovery
 Why ?
 Request를 보내기 위해서는 서비스 인스턴스가 네트워크 어디에 있는지 알아야 함
 IP와 Port 정보가 필요
 서비스 레지스트리는 각 서비스 인스턴스의 네트워크 정보를 저장하는 데이터베이스
 항상 최신 정보를 유지하고, 고가용성이 필요
 Netflix Eureka, etcd, Consul, Apache Zookeeper
 서비스 등록은 Self-Registration Pattern과 Third-Party Registration Pattern
28
Event Driven
 분산 데이터
 CAP(Consistency, Availability, Partition tolerance)를 만족하지 못함
Two-phase commit protocol
Event Sourcing
개체의 현재 상태를 저장하는 대신
상태를 변경하는 이벤트 내역을 목록으로 저장
이벤트 목록을 기반으로 현재 상태를 재구성
CQRS(Command Query Responsibility Segregation)
명령(데이터를 변경하는 Create/Delete/Update)와
쿼리(데이터를 조회하는 Read)를 분리
29
마이크로서비스 개발 환경 및 테스트
30
V-Model & Test Pyramid
 Each phase has corresponding test or validation counterpart
Requirements
Analysis
System
Design
Program
Design
Implementation
Unit Test
Integration
Test
Acceptance
Test
Nested V-Model
Nested multiple V-Model
31
Microservice Deploy
 Use Continuous Integration/Delivery/Deployment
 Decreased lead times and higher quality with smaller batches
Monitoring
32
Deployment Strategy
33
MSA 사례
34
Best Practices #1
 A사 유사 사례
모놀리스
지속적인 배포
파이프라인
생산 환경
검색
주문
배송
검색
주문
배송
마이크로서비스
지속적인 배포
파이프라인
마이크로서비스
지속적인 배포
파이프라인
마이크로서비스
지속적인 배포
파이프라인
생산 환경생산 환경
모놀리스로 인해
팀간의 작업 속도가 느려진다.
35
Best Practices #2
 신호처리 시스템(Signal Inc.)
 다양한 종류의 HW -> 이기종 시스템의 통합
 서로 다른 데이터 처리 작업  팀 별 기술 스택이 다름
 분산 시스템
통
신
시
스
템
Processing
Processing
Processing
Sensor
Sensor
Sensor
Sensor
36
Microservice Reference Model
37

More Related Content

What's hot

SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법 YoungSu Son
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
마이크로서비스 개요
마이크로서비스 개요마이크로서비스 개요
마이크로서비스 개요Younghun Yun
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
[웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10!
[웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10![웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10!
[웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10!Open Source Consulting
 
Kubernetes Controller for Pull Request Based Environment
Kubernetes Controller for Pull Request Based EnvironmentKubernetes Controller for Pull Request Based Environment
Kubernetes Controller for Pull Request Based EnvironmentVishal Banthia
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스Terry Cho
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들Brian Hong
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관제관 이
 
모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018
모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018
모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018Amazon Web Services Korea
 
AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈
AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈
AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈Amazon Web Services Korea
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive [2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive Amazon Web Services Korea
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)Amazon Web Services Korea
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기JinyoungKim52579
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 

What's hot (20)

SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
마이크로서비스 개요
마이크로서비스 개요마이크로서비스 개요
마이크로서비스 개요
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
[웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10!
[웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10![웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10!
[웨비나] 클라우드 마이그레이션 수행 시 가장 많이 하는 질문 Top 10!
 
Kubernetes Controller for Pull Request Based Environment
Kubernetes Controller for Pull Request Based EnvironmentKubernetes Controller for Pull Request Based Environment
Kubernetes Controller for Pull Request Based Environment
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
 
모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018
모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018
모놀리스에서 마이크로서비스 아키텍처로의 전환 전략::박선용::AWS Summit Seoul 2018
 
AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈
AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈
AWS 클라우드 이해하기-사례 중심 (정민정) - AWS 웨비나 시리즈
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive [2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
 
CQRS and Event Sourcing
CQRS and Event SourcingCQRS and Event Sourcing
CQRS and Event Sourcing
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 

Similar to Microservices

Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureYoonsung Jung
 
마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법Young Soo Lee
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)uEngine Solutions
 
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...OpenStack Korea Community
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservicesSeong-Bok Lee
 
Micro Service Architecture
Micro Service ArchitectureMicro Service Architecture
Micro Service ArchitectureHEECHEOL YANG
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 
Cloud native application 입문
Cloud native application 입문Cloud native application 입문
Cloud native application 입문Seong-Bok Lee
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가VMware Tanzu Korea
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...문기 박
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기Amazon Web Services Korea
 
Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck Guenjun Yoo
 
Sumologic Kubernetes 라이브데모
Sumologic Kubernetes 라이브데모Sumologic Kubernetes 라이브데모
Sumologic Kubernetes 라이브데모Guenjun Yoo
 
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...OpenStack Korea Community
 
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개confluent
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브Open Source Consulting
 
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사Amazon Web Services Korea
 
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사POSCO ICT
 
AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.ILowy Shin
 

Similar to Microservices (20)

Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
 
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
 
Micro Service Architecture
Micro Service ArchitectureMicro Service Architecture
Micro Service Architecture
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
Cloud native application 입문
Cloud native application 입문Cloud native application 입문
Cloud native application 입문
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck Sumologic Kubernetes technical demo deck
Sumologic Kubernetes technical demo deck
 
Sumologic Kubernetes 라이브데모
Sumologic Kubernetes 라이브데모Sumologic Kubernetes 라이브데모
Sumologic Kubernetes 라이브데모
 
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
 
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
 
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
 
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
 
AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.I
 

More from 영기 김

Ms Azure fundamentals
Ms Azure fundamentalsMs Azure fundamentals
Ms Azure fundamentals영기 김
 
AWS Certified Cloud Practitioner
AWS Certified Cloud PractitionerAWS Certified Cloud Practitioner
AWS Certified Cloud Practitioner영기 김
 
Dev ops Introduction
Dev ops IntroductionDev ops Introduction
Dev ops Introduction영기 김
 
칸반(Kanban)
칸반(Kanban)칸반(Kanban)
칸반(Kanban)영기 김
 
린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)영기 김
 
배열과 포인터
배열과 포인터배열과 포인터
배열과 포인터영기 김
 
소프트웨어 아키텍처 평가(Atam)
소프트웨어 아키텍처 평가(Atam)소프트웨어 아키텍처 평가(Atam)
소프트웨어 아키텍처 평가(Atam)영기 김
 
스크럼(Scrum)
스크럼(Scrum)스크럼(Scrum)
스크럼(Scrum)영기 김
 
익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)영기 김
 
애자일 코치
애자일 코치애자일 코치
애자일 코치영기 김
 
통신시스템(Wcdma network)
통신시스템(Wcdma network)통신시스템(Wcdma network)
통신시스템(Wcdma network)영기 김
 
통신시스템(Cdma network)
통신시스템(Cdma network)통신시스템(Cdma network)
통신시스템(Cdma network)영기 김
 
통신시스템(Gprs network)
통신시스템(Gprs network)통신시스템(Gprs network)
통신시스템(Gprs network)영기 김
 
소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화영기 김
 
통신시스템(Gsm network)
통신시스템(Gsm network)통신시스템(Gsm network)
통신시스템(Gsm network)영기 김
 
소프트웨어 아키텍처
소프트웨어 아키텍처소프트웨어 아키텍처
소프트웨어 아키텍처영기 김
 
통신시스템(Cellular concepts)
통신시스템(Cellular concepts)통신시스템(Cellular concepts)
통신시스템(Cellular concepts)영기 김
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅영기 김
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조영기 김
 

More from 영기 김 (20)

Ms Azure fundamentals
Ms Azure fundamentalsMs Azure fundamentals
Ms Azure fundamentals
 
AWS Certified Cloud Practitioner
AWS Certified Cloud PractitionerAWS Certified Cloud Practitioner
AWS Certified Cloud Practitioner
 
Dev ops Introduction
Dev ops IntroductionDev ops Introduction
Dev ops Introduction
 
칸반(Kanban)
칸반(Kanban)칸반(Kanban)
칸반(Kanban)
 
린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)
 
What is agile
What is agileWhat is agile
What is agile
 
배열과 포인터
배열과 포인터배열과 포인터
배열과 포인터
 
소프트웨어 아키텍처 평가(Atam)
소프트웨어 아키텍처 평가(Atam)소프트웨어 아키텍처 평가(Atam)
소프트웨어 아키텍처 평가(Atam)
 
스크럼(Scrum)
스크럼(Scrum)스크럼(Scrum)
스크럼(Scrum)
 
익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)
 
애자일 코치
애자일 코치애자일 코치
애자일 코치
 
통신시스템(Wcdma network)
통신시스템(Wcdma network)통신시스템(Wcdma network)
통신시스템(Wcdma network)
 
통신시스템(Cdma network)
통신시스템(Cdma network)통신시스템(Cdma network)
통신시스템(Cdma network)
 
통신시스템(Gprs network)
통신시스템(Gprs network)통신시스템(Gprs network)
통신시스템(Gprs network)
 
소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화
 
통신시스템(Gsm network)
통신시스템(Gsm network)통신시스템(Gsm network)
통신시스템(Gsm network)
 
소프트웨어 아키텍처
소프트웨어 아키텍처소프트웨어 아키텍처
소프트웨어 아키텍처
 
통신시스템(Cellular concepts)
통신시스템(Cellular concepts)통신시스템(Cellular concepts)
통신시스템(Cellular concepts)
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 

Microservices

  • 2. 2 Contents 1 마이크로서비스의 정의 0 Warm-up 3 마이크로서비스 사용 이유 및 문제점 4 마이크로서비스의 통합 및 통신 2 마이크로서비스의 구조 5 마이크로서비스 개발 환경 및 테스트 6 MSA 사례
  • 3. 3 Infrastructure Evolution  IT 인프라스트럭처의 진화 Electronic accounting machine 1930 ~ 1950  데이터 처리를 위한 크고 복잡한 컴퓨터 사용  하드 와이어드 소프트웨어 General-Purpose Mainframe and minicomputer 1950 ~ 현재  1958: IBM 메인프레임  1965: DEC 미니컴 Personal computer 1981 ~ 현재  1981: IBM PC  80~90년대 PC 및 SW 급증 Client Server 1983 ~ 현재  서버와 클라이언트의 네트워킹을 통한 작업 분할  N-tier  다양한 유형의 서버: 네트워크, 애플리케이션, Web Enterprise Internet 1992 ~ 현재  분산 네트워크  인터넷 표준 및 엔터프라이즈 애플리케이션 Cloud and mobile computing 2000 ~ 현재  컴퓨팅 및 애플리케이션이 인터넷이나 네트워크를 통해 제공  가장 빠르게 증가하는 컴퓨팅 형태
  • 4. 4 Software Development Methodology  Waterfall  Agile  DevOps Waterfall Agile DevOps Analysis Development Build Test Deployment DEV QA OPS Test Deployment DEV QA OPS A D B A D B A D B Sprint Sprint Sprint A D B T D Sprint DEV/QA/OPS A D B T D Sprint DEV/QA/OPS A D B T D Sprint DEV/QA/OPS
  • 5. 5 Prolog - History Innovation 1985 1995 2005 2015 2025 OO application (offline, monolith) Online systems (offline, monolith) Distributed systems (distributed monolith) Microservices Technology X Challenge: Reaching customers (diskettes, CDs) Challenge: Scaling Performance Challenge: Zero downtime Upgrade Challenge: Comprehension Monolith Single unit SOQ Coarse-grained Microservices Fine-grained
  • 6. 6 Prolog - AOP AOP(Aspect Oriented Programming)은 기능을 핵심 비즈니스 로직과 공통 모듈로 구분하고, 핵심 로직에 영향을 주지 않으면서 로직 사이 사이에 공통 모듈을 효과적으로 삽입해 개발하는 방법이다. 코드 외부에서 공통 모듈을 만든 후, 공통 모듈을 비즈니스 로직에 삽입하는 것이 핵심이다. OOP AOP 로깅 기능 보안 기능 트랜잭션 오류 처리 통계 처리 로깅 기능 호출 로깅 기능 호출 보안 기능 호출 보안 기능 호출 트랜잭션 호출 트랜잭션 호출 트랜잭션 호출 트랜잭션 호출 추상화 로깅 기능 보안 기능 트랜잭션 오류 처리 통계 처리 Application Primary Concern Cross-Cutting Concern Application Primary Concern Code Aspect Point-cut Cross-Cutting Concern Advise Primary(Core) Concern: 비즈니스 로직을 구현한 부분 Cross-Cutting Concern: 부가적인 기능으로 시스템 전반에 산재되어 사용되는 기능 Code: primary Concenㅇ르 구현해 놓은 코드 Join Point: 횡단 관심 모듈 기능이 삽입되어 동작할 수 있는 실행 가능한 특정 위치 Point-Cut: 어느 클래스의 Join Point를 사용할 것인지 결정하는 선택 기능 Advise: 각 Join-Point에 삽입되어 동작할 수 있는 코드
  • 7. 7 Prolog - SOA  Service Oriented Architecture …  서비스 요청자(Client)와 제공자로 이루어진 애플리케이션 설계 방식  표준 기반의 공통 모듈(재사용)로 가능한 서비스들을 느슨한 관계 모델링을 통해 소프트웨어의 서비스화를 지향하는 아키텍처 Service Orientation Architecture  Open 된 상호 호환성을 갖는 프로토콜을 사용  애플리케이션 서비스 Description과 이를 지원하는 Dynamic Discovery 시스템을 통해 조합 가능한 환경  전체적인 목표를 달성하기 위해 컴포넌트를 조합하는 프로세 스  Layer에 의해 구성되는 컴포넌트들을 통해 이루어지는 Blueprint로 컴포넌트간 특성 및 관계, 상호작용, 제약 사항을 포함 Service Consumer Service Provider Service Broker Find Register Bind Message Client Service Service Contract 자기 설명적인 인터페이스를 가진 서비스는 플랫폼 독립적인 XML 형식으 로 정의되어, Service Broker를 통해 서비스로 등록되고 관리되며, 애플리케이션이 증가해도 서비스를 찾을 수 있는 방법이 제공된다.
  • 8. 8 Prolog - Service  서비스  논리적으로 하나의 단위를 이루는 업무를 자체적으로 처리할 수 있는 SW 컴포넌트  플랫폼 독립적, 동적 검색 및 호출, Self-contained  비즈니스 업무의 논리 단위를 구현한 것으로, 개방형 인터페이스로 설계되어 다른 서비스에서 접근이 가능한 소프트웨어 컴포넌트 Service Implementation  실제 서비스 처리 Service Interface  Request를 받아들임  결과를 반환 Infrastructure Service Existing Application External Services Existing Application Service Wrapper Service Wrapper Coarse Grained Business Service (Business Service Bus) Aggregation Fine Grained Implementation-Based Service 추상화
  • 11. 11 Microservices - Definition  Microservices is … A software architecture style in which complex applications are composed of small, Independent process communicating with each other using language-agnostic APIs. These services are small, highly decupled and focus on doing a small task, facilitating a modular approach to system-build - Wikipedia 서비스 디자인 스타일로서 작은 서비스의 결합을 통해 하나의 응용프로그램을 개발하는 방법으로, 각각의 서비스는 독립적인 로직으로 구성되며, 완전히 자동화 된 개발/배포환경에 의해 각각 독립적으로 배포될 수 있다. 최소한의 중심적인 관리 체계가 있으며, 이 시스템은 각각 다른 프로그래밍 언어, 다른 데이터 스토리지 기술로 작성이 가능하 다. - Martin Fowler at ThoughWorks Data Store Public API Software Modules: Application code, libraries, … Microservices = Fine-grained service-oriented architecture + “small” public API Microservice
  • 12. 12 Microservices – Pros, & Cons. Data Business Logic Web Monolithic Design Microservices Design Http Listener Page Content ReportingOrder ManagementUsage Analytics AuthenticationOrderSearching Monolithic Style Microservices Single Unit with all components interwoven Applications are suite of service Overall Scaling of the structure required Each service independently scalable Overall deployment Independently deployable Increases complexity for developers More developer friendly One errant component crashes the whole system Fault diagnosis and isolation is easier Testing is streamlined Difficult to test
  • 13. 13 Microservices - Size  마이크로서비스의 크기에 영향을 주는 요소들 마이크로서비스의 이상적인 크기 ? 팀 크기 (조직 구조) 모듈화 교체 가능성 트랜잭션과 일관성 인프라스트럭처 분산 통신 마이크로서비스는 여러 팀의 작업이 필요한 만큼 커져서는 안된다 팀들은 독립적으로 작업하고 소프트웨어를 출시 할 수 있어야 한다 개발자가 이해하고 추가적인 개발을 허용하는 크기가 좋다 교체 가능성은 마이크로서비스의 크기를 감소시킨다 트랜잭션과 일관성은 하나의 마이크로서비스에서만 보장된다 필요한 인프라 제공이 힘든 경우, 마이크로서비스의 개수가 제한된다 마이크로서비스가 증가하면 분산 통신이 증가한다
  • 14. 14 Microservices – Organization: Conway’s law Organizations which design system (in the board sense used here) are constrained to produce design which are copies of the communications structures of these organizations - Melvin Conway, Datamation, 1968
  • 15. 15 Microservices – Most Important thing!  Only rely on each other’s public API  모든 팀은 서비스 인터페이스를 통해 자신들의 데이터와 기능을 노출한다  팀들은 반드시 인터페이스를 통해 서로 통신한다  모든 서비스 인터페이스는 예외 없이 처음부터 노출이 가능하도록 설계되어야 한다 Microservice A Microservice B
  • 17. 17 MSA  Microservices Architecture  서비스를 기능별로 작게 분할한 서버 아키텍처의 디자인 패턴  Inner Architecture – 개발 마이크로서비스의 아키텍처  Outer Architecture – 마이크로서비스로 구성된 시스템의 아키텍처 미시적 관점 거시적 관점 Inner Architecture Outer Architecture • Single Purpose • Loosely coupled • Independently deployable • Independently disposable • Focused Business Capabilities • Decentralized Data Management • Heterogeneous Technology • Logging & Monitoring • Stateless • Managed APIs • Expose services • Route messages • Asynchronous communication • Load Balancing • Service Discovery • Shared Configuration • Dependency management • Transaction Analysis • Logging & Monitoring
  • 18. 18 Microservices - Implementation  MSA 구현  일반적으로 아래와 같은 4단계를 거침 기능별로 서비스 애플리케이션 분리 서비스 이미지 개발 클라이언트에서 필요한 서비스 선택 인스턴스 선택 및 관리1 2 3 4 하나의 서비스는 한 가지 일에 초점을 맞춘다 각 서비스는 적절한 자원을 제공 받아야 하며, 배포가 빠 르고 효율적이어야 한다 너무 많은 요청은 비효율적이며, 클라이언트 코 드가 복잡해진다 서비스 = Σ 가상화 인스턴스 서비스 검색 패턴을 정의해야 한다  서버마다 전체 서비스 실행  서비스를 VM에서 실행  서비스를 컨테이너에서 실행  API Gateway - 비동기/논블로킹 I/O  IPC - 동기(메시지 기반) - 비동기(Request)  Client Side Discovery Pattern  Server Side Discovery Pattern - 로드 밸런서가 존재 하나의 서비스는 여러 인스턴스로 실행되고, 인스턴스들의 IP가 변함 Service Discovery 가용 인스턴스 목록 관리
  • 19. 19
  • 21. 21 Microservices - Benefits  마이크로서비스 사용 시 혜택 기술 측면 조직 측면 비즈니스 측면  교체 가능성  지속 가능한 개발  레거시 처리  지속적인 통합 활용  확장성  견고성  자유로운 기술 선택  독립성  팀의 독립성  자기 조직화  소규모 프로젝트  병렬 기능 개발  애자일 프로세스의 확장  과도한 조정이나 소통을 요구하지 않음 모놀리식 개발 수명주기 마이크로서비스 개발 수명주기 개발자 App 전달 파이프라인 빌드 테스트 출시 빌드 테스트 출시 빌드 테스트 출시 빌드 테스트 출시 개발자 서비스 전달 파이프라인
  • 22. 22 Microservices – Challenges  마이크로서비스 개발 시 고려사항 장애진단 다양한 기술에 대한 표준 관리 API를 통한 통신  성능 문제 상이한 설정 및 기동 방법 테스팅 팀 역량에 따른 일정 및 품질 문제 모니터링 트랜잭션 관리 서비스 조정
  • 25. 25 API Gateway  API Gateway  요청에 따라 필요한 서비스로 라우팅  많은 요청을 처리하기 위해, 비동기 및 논블락킹 기반으로 설계  API Gateway 장애 발생 시 서비스 전체가 다운  API Gateway는 로드밸런싱, 캐싱, 모니터링 등 다양한 기능을 가질 수 있음  병목 지점이 될 가능성이 있다.
  • 26. 26 IPC  Inter-Process Communication  마이크로서비스 시스템 = 분산 시스템  서비스 간 통신이 필요(1:1, 1:N)  IPC 기술  동기 요청/응답 기반 : REST, …  비동기 메시지 기반 : AMQP, …  데이터 포맷  텍스트 기반 : JSON, XML, …  바이너리 : Protocol Buffers, … 1:1 1:N Synchronous Request/response - Asynchronous Notification Request/async response Publish/subscribe Publish/async response Channel 메시징 시스템이 필요
  • 27. 27 Service Discovery  Why ?  Request를 보내기 위해서는 서비스 인스턴스가 네트워크 어디에 있는지 알아야 함  IP와 Port 정보가 필요  서비스 레지스트리는 각 서비스 인스턴스의 네트워크 정보를 저장하는 데이터베이스  항상 최신 정보를 유지하고, 고가용성이 필요  Netflix Eureka, etcd, Consul, Apache Zookeeper  서비스 등록은 Self-Registration Pattern과 Third-Party Registration Pattern
  • 28. 28 Event Driven  분산 데이터  CAP(Consistency, Availability, Partition tolerance)를 만족하지 못함 Two-phase commit protocol Event Sourcing 개체의 현재 상태를 저장하는 대신 상태를 변경하는 이벤트 내역을 목록으로 저장 이벤트 목록을 기반으로 현재 상태를 재구성 CQRS(Command Query Responsibility Segregation) 명령(데이터를 변경하는 Create/Delete/Update)와 쿼리(데이터를 조회하는 Read)를 분리
  • 30. 30 V-Model & Test Pyramid  Each phase has corresponding test or validation counterpart Requirements Analysis System Design Program Design Implementation Unit Test Integration Test Acceptance Test Nested V-Model Nested multiple V-Model
  • 31. 31 Microservice Deploy  Use Continuous Integration/Delivery/Deployment  Decreased lead times and higher quality with smaller batches Monitoring
  • 34. 34 Best Practices #1  A사 유사 사례 모놀리스 지속적인 배포 파이프라인 생산 환경 검색 주문 배송 검색 주문 배송 마이크로서비스 지속적인 배포 파이프라인 마이크로서비스 지속적인 배포 파이프라인 마이크로서비스 지속적인 배포 파이프라인 생산 환경생산 환경 모놀리스로 인해 팀간의 작업 속도가 느려진다.
  • 35. 35 Best Practices #2  신호처리 시스템(Signal Inc.)  다양한 종류의 HW -> 이기종 시스템의 통합  서로 다른 데이터 처리 작업  팀 별 기술 스택이 다름  분산 시스템 통 신 시 스 템 Processing Processing Processing Sensor Sensor Sensor Sensor
  • 37. 37