마이크로서비스 아키텍처와 devops 기술 - amazon 사례를 중심으로 (윤석찬)

52
윤석찬 아마존웹서비스 테크 에반젤리스트 @channyun 마이크로서비스데브옵스 기술 소개 Amazon 사례를 중심으로

Upload: amazon-web-services-korea

Post on 16-Apr-2017

5.021 views

Category:

Technology


13 download

TRANSCRIPT

Page 1: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

윤석찬 아마존웹서비스 테크 에반젤리스트 @channyun

마이크로서비스와 데브옵스 기술 소개 Amazon 사례를 중심으로

Page 2: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Cloud_ Microservices_

DevOps_

요즘 이런 용어들이 유행입니다!

Page 3: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

"미래는 이미 와 있다. 단지 널리 퍼져있지 않을 뿐이다.”

"The future is already here — it's just not very evenly distributed.”

윌리엄 깁슨

기술 유행은 언제나 후행입니다만, 미래를 위해서는 현재를 살펴 봐야 합니다.

Page 4: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

SOA D

evO

ps

하나씩 살펴 볼까요?

Page 5: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Origin of Microservices?

마이크로서비스는 어떻게 시작됐나요?

Page 6: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

““아마존닷컴은 10년전 (1995년) 웹 서버와 데이터베이스 백엔드를 가지는 모놀리식(Monolithic) 애플리케이션이었습니다.”

A Conversation with Werner Vogels , 2006 http://queue.acm.org/detail.cfm?id=1142065

그 시작은 바로 아마존닷컴!

Page 7: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

5년전(2001년) 아마존은 주요한 아키텍쳐 변화가 있었는데 2 티어(tier)기반에서 서로 다른 애플리케이션 기능을 제공하는 분산 서비스 플랫폼으로 변화하였습니다… 여러분이 지금 Amazon.com의 첫화면에 들어온다면, 그 페이지를 생성하기 위해 100여개가 넘는 서비스를 호출하여 만들고 있습니다.”

AConversationwithWernerVogels,2006

Page 8: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

완전한 서비스 지향 아키텍쳐 (SOA)

재료(primitives)로서 인터페이스를 가진

서비스들 “Microsevices” 왼쪽 구조도에서 각 점은 아마존닷컴의 개별 서비스로서 각 서비스간 의존성을 표시

Page 9: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

애플리케이션을 완성하기 위한 원료 혹은 재료로서 이를 빌딩 블록으로 조립하여, 원하는 서비스를 만들 수 있는 구성 요소를 말한다. 마치 레고블럭을 조립하여 우리가 원하는 모양의 레고를 만들 수 있는 것과 같은 원리

primitives

Page 10: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

AWS 역시 다양한 재료 서비스를 조합 원하는 클라우드 아키텍쳐 구성

Page 11: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

How to DevOps?

“제품 개발팀을 작게 유지하라 이렇게 하면 프로젝트를 실제로 실행가능하고 측정가능한 단위로 쪼개야만 하게 된다. 아마존의 대부분의 새로운 기능들과 서비스는 두 판의 라지 사이즈 피자로 먹일 수 있는 팀에 의하여 개발되었다.” 제프베조스의 2006년 11월 Business Week 인터뷰

Page 12: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

각 팀이 분산된 민첩하면서, 독립적인,

신뢰하고, 오너쉽을 가진 서비스 팀

“DevOps”

피자 두판의 팀이란?

Page 13: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

DevOps 파이프라인

소스 개발

Developers commit changes

빌드

Changes are built and unit tested

테스트

Code deployed to staging and load/UI tested

정식 출시

Code is deployed to production

변경, 수정, 기능 업데이트

아이디어 요청, 버그 수정, 피드백

개발자 고객/사용자

Page 14: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Amazon 내부 시스템

아폴로- 배포 서비스

파이프라인 – 출시 자동화

“수천명의 아마존 개발자들은 매일 Apollo를 사용하여, Java, Python, Ruby 앱을 웹 서비스로 네이티브 코드 서비스로 배포하고 있습니다. 지난 12개월 동안 Apollo는 5천만번이 넘는 개발, 테스트 및 정식 서버로 배포가 진행되었습니다. 이는 초당 한번 평균 한번 이상의 배포횟수입니다. “ Werner Vogels, The Story of Apollo - Amazon’s Deployment Engine, 2014 http://www.allthingsdistributed.com/2014/11/apollo-amazon-deployment-engine.html

Page 15: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

DevOps LifeCycle

모니터링 구축 배포 테스트 빌드 코딩

AWS Elastic

Beanstalk

AWS OpsWorks

AWS CloudWatch

AWS CloudFormation

AWS CodePipeline

AWS CodeCommit

AWS CodeDeploy

고객들의 요구로 AWS에도 사용 가능합니다!

Page 16: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

AWS 코드 서비스 + 기타 도구와 연계 가능

Page 17: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

SOA

Dev

Ops

Page 18: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

What’s Microservices? “마이크로서비스 아키텍처라는 용어는 소프트웨어 응용 프로그램을 독립적으로 배치 가능한 서비스 조합(suite)으로 설계하는 방식으로서 지난 몇 년 동안 빠르게 자리잡아 가고 있습니다. 본 아키텍처 스타일에 대해 아직 명확한 정의는 없지만, 비지니스 수행과 관련된 조직, 배포 자동화, (서비스) 엔드 포인트의 지적 능력(intelligence), 그리고 프로그래밍 언어와 데이터의 분산 제어에 관한 일반적인 특징들은 존재합니다.” James Lewes, Martin Fowler - Microservices http://channy.creation.net/articles/microservices

Page 19: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

마이크로서비스의 정의(2)

A Microservice Definition !

Loosely coupled service oriented architecture with bounded contexts

If every service has to be updated at the same time it’s not loosely coupled

If you have to know too much about surrounding services you don’t have a bounded context. See the Domain Driven Design book by Eric Evans.

© Adrian Crockford, DockerCon 2014

Page 20: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Loosely Coupled “다른 서비스의 변경과 관계없이 독자적으로 서비스 업데이트를 할 수 있는 구조로서, 아무리 작은 서비스로 나누었더라도 동시에 업데이트 해야 한다면 느슨한 결합이 아니다. 높은 결합이 일어나는 대부분의 요인은 데이터베이스를 공유하는 것으로 DB스키마가 변하면 관련 서비스가 모두 업데이트 되어야 하므로, 가급적 DB를 나누고 비정규화 할 필요가 있다.”

Page 21: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Developer/ Team

Developer/ Team

Developer/ Team

Developer/ Team

Developer/ Team

Build

Stage #1 Stage #2 … Stage #N Production

Build Build Build Build

Spring

여러 팀이 한 덩어리 앱에 기능을 추가하면?

Page 22: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Developer

Developer

Developer

Developer

Developer

Build

Stage #1 Stage #2 … Stage #N Production

Build Build Build Build

Bug! Spring

문제가 생기면, 모든 것이 스톱됩니다!

Page 23: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Developer/ Team

Developer/ Team

Developer/ Team

Developer/ Team

Developer/ Team

Build

Stage #1 Stage #2 … Stage #N Production

Build Build Build Build

Build Build Build Build Build

Build Build Build Build Build

Spring

Node.js

Ruby onRails

여러 팀이 개별 서비스를 독립적으로 운영하면?

Page 24: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Developer

Developer

Developer

Developer

Developer

Build

Stage #1 Stage #2 … Stage #N Production

Build Build Build Build

Bug!

Build Build Build Build Build

Build Build Build Build Build

Spring

Node.js

Ruby onRails

서비스 장애의 피해가 최소화 됩니다!

Page 25: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Bounded Contexts

“이 개념은 에릭 에반스(Eric Evans)의 도메인 주도 디자인(Domain-driven Design)에서 것으로 스스로 독립적이고 완결적인 맥락을 가지고 있고, 주변 서비스의 내부 디자인을 모르더라도 된다. 다른 맥락을 가진 서비스와의 모델 및 데이터 참조는 정확히 정의된 인터페이스(API) 만으로 통신가능하다.”

Page 26: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

© James Lewes, Martin Fowler Domain-Driven Design

Page 27: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

© James Lewes, Martin Fowler

Page 28: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

“넷플릭스는 수백개의 마이크로서비스를 AWS 클라우드 기반으로 운영하고 있는 것으로 유명하다. 또한, 인터널 API를 기반으로 가벼운 REST 프로토콜을 활용하여 서비스 통신을 하고 있으며, Netflix Internal Web Service Framework(NIWS) 그리고 이러한 다양한 서비스를 발견하기 위한 목록 관리를 위한 Eureka, 서비스간 유연한 소통을 위한 Ribbon 등 클라우드 내 서비스 운영을 위한 수십개의 오픈 소스 프로젝트를 http://netflix.github.io/ 에 공개하고 있다.”

http://techblog.netflix.com/2013/01/announcing-ribbon-tying-netflix-mid.html

Page 29: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

© Adrian Crockford, DockerCon 2014

마이크로 서비스 구조의 전형적 특징 – Death Star 아키텍쳐

Page 30: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Q: AWS를 통한 마이크로서비스를 위한 빠르고 효율적인 앱 배포가 가능할까?

Page 31: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Docker 콘테이너 제작 및 배포

EC2 인스턴스를 클러스터 구성 가능

실행 시 지속적인 볼륨 유지 가능

사설 Docker 레포지터리 운영

Amazon EC2 Container Service

“Docker기반 확장성과 고성능 콘테이너 관리 서비스”

Page 32: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
Page 33: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
Page 34: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

EC2 Instance EC2 Instance EC2 Instance

Page 35: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

EC2 Instance EC2 Instance EC2 Instance

EC2 Instance EC2 Instance

EC2 Instance EC2 Instance

Page 36: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Q: 마이크로서비스를 위한 이벤트 기반의 작은 서비스 구성이 가능할까?

Page 37: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

AWS 자원의 변경 이벤트 변화 인식

Node.js, Python, 자바를 지원하는 클라우드 함수

서버 없이도 유연한 확장

AWS Lambda

“이벤트 기반 확장성 높은 클라우드 코드 실행 서비스”

Page 38: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Photo bucket S3

Metadata DynamoDB

Trending DynamoDB

Extract metadata

Cloud Function

Trending Cloud

Function

NotifyCloud Function

JJ

SNS Push notification

Page 39: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Q: 마이크로서비스를 위한 API 관리를 쉽게 할 수 없을까?

Page 40: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Amazon API Gateway

API 버전 관리

API 트래픽 관리 데이터 캐싱 인증 및 보안 SDK 자동

생성

“확장성과 보안성 높은 API 개발, 관리 모니터링 서비스”

Page 41: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

API Gateway 모식도

Internet

Mobile Apps

Websites

Services

AWS Lambda functions

AWS

API Gateway Cache

Endpoints on Amazon EC2

Any other publicly accessible endpoint Amazon

CloudWatch Monitoring

Amazon CloudFront API Gateway

Page 42: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

https://aws.amazon.com/blogs/compute/the-squirrelbin-architecture-a-serverless-microservice-using-aws-lambda/

Server-less Microservices Architecture on AWS

Page 43: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Amazon EC2 Amazon EC2 Containers Services

AWS Lambda On-Premises

Weeks Minutes Seconds Milliseconds

클라우드는 애플리케이션 확장성 및 민첩성을 높히는 방향으로 진화 중입니다!

Page 44: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Netflix 아키텍쳐 Asgard, Amimator, Hystrix,

Cassandra, JVM, Docker, …

Page 45: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
Page 46: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

Hailo 아키텍쳐 Hubot, Janky, Jenkins,

Go, RabbitMQ, Cassandra, Docker, …

Page 47: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
Page 48: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

여러분의 아키텍쳐는?

ECS, Lambda, API Gateway, CodeDeploy, DynamoDB, SQS…

Page 49: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
Page 50: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

어디서 시작할까요? 1.  아마존 웹 서비스(AWS) 가입 ▶ http://aws.amazon.com/ko

2.  Amazon 프리티어 서비스 ▶ http://aws.amazon.com/freetier Amazon EC2 가상 서버의 경우, 750시간의 t2.micro 인스턴스와 10GB의 Amazon EBS 스토리지 옵션 ※ t2.micro 인스턴스 10대 x 월 75시간 무료 사용 가능

3.  Amazon 서비스 교육 및 강의 수강 ▶ http://bit.ly/awskr-webinar •  다양한 주제에 대한 온디메인드 온라인 세미나

4.  Amazon 서비스 무료 실습하기 ▶ http://qwiklab.com

Page 51: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

마이크로서비스 관심자를 위한 880달러 선물!

http://bit.ly/awskr-feedback

AWS Activate 패키지 100달러 무료 크레딧 + 80 달러 Qwiklab Credit

600달러 온라인 강좌 수강권+ 100달러 1개월 비지니스 서포트

등록하시면 패키지를 받으실 수 있는 URL을 이메일로 보내드립니다!

Page 52: 마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)

여러분의 피드백을 기다립니다!

•  AWSKRUG: http://awskr.org •  AWS 공식 블로그: http://aws.amazon.com/ko/blogs/korea •  AWS 공식 소셜 미디어

@AWSKorea

AmazonWebServices

AWSKorea

AWSKorea