마이크로 서비스 아키텍처로 개발하기

Similar documents
Intro to Servlet, EJB, JSP, WS

NCS : ERP(SAP) ERP(SAP) SW IT,. SW IT 01., 05., 06., 08., 15., , 05. SW IT,,,, SAP HR,,, 4,,, SAP ABAP HR SCHEMA, BSP,


Service-Oriented Architecture Copyright Tmax Soft 2005


PowerPoint 프레젠테이션

No Slide Title

PowerPoint 프레젠테이션

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

Agenda 오픈소스 트렌드 전망 Red Hat Enterprise Virtualization Red Hat Enterprise Linux OpenStack Platform Open Hybrid Cloud

Portal_9iAS.ppt [읽기 전용]

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

untitled

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx


SchoolNet튜토리얼.PDF

J2EE & Web Services iSeminar

슬라이드 1

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

서현수

Microsoft Word - 조병호

Gartner Day

PCServerMgmt7

PowerPoint Presentation

[Brochure] KOR_LENA WAS_

TTA Journal No.157_서체변경.indd

Mstage.PDF

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

Egretia_White_Paper_KR_V1.1.pages

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

ibmdw_rest_v1.0.ppt

슬라이드 1

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

PowerPoint Presentation

¨ìÃÊÁ¡2

Model Investor MANDO Portal Site People Customer BIS Supplier C R M PLM ERP MES HRIS S C M KMS Web -Based

슬라이드 1

1.장인석-ITIL 소개.ppt

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

클라우드컴퓨팅확산에따른국내경제시사점 클라우드컴퓨팅확산에따른국내경제시사점 * 1) IT,,,, Salesforce.com SaaS (, ), PaaS ( ), IaaS (, IT ), IT, SW ICT, ICT IT ICT,, ICT, *, (TEL)

Analyst Briefing

Voice Portal using Oracle 9i AS Wireless


논리적 구조 설계: 패키지도

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

Week13

2009방송통신산업동향.hwp

Microsoft Word - 오세근

PowerPoint 프레젠테이션

6강.hwp

이제는 쓸모없는 질문들 1. 스마트폰 열기가 과연 계속될까? 2. 언제 스마트폰이 일반 휴대폰을 앞지를까? (2010년 10%, 2012년 33% 예상) 3. 삼성의 스마트폰 OS 바다는 과연 성공할 수 있을까? 지금부터 기업들이 관심 가져야 할 질문들 1. 스마트폰은

PowerPoint 프레젠테이션

The Self-Managing Database : Automatic Health Monitoring and Alerting

Windows Live Hotmail Custom Domains Korea

Cloud Friendly System Architecture

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

IBM blue-and-white template

Interstage5 SOAP서비스 설정 가이드

歯이시홍).PDF

ETL_project_best_practice1.ppt

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

2

J2EE Concepts

PowerPoint 프레젠테이션

00-CourseSyllabus

vm-웨어-01장

歯튜토리얼-이헌중.PDF

[Brochure] KOR_TunA

요약 1

JavaGeneralProgramming.PDF

03여준현과장_삼성SDS.PDF

DW 개요.PDF

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

about_by5

2018 All Rights Reserved 초판 1쇄발행 지은이 펴낸이 펴낸곳 출판신고 주소 B 전화 팩스 홈페이지 www jpub kr

08SW

歯김병철.PDF

, N-. N- DLNA(Digital Living Network Alliance).,. DLNA DLNA. DLNA,, UPnP, IPv4, HTTP DLNA. DLNA, DLNA [1]. DLNA DLNA DLNA., [2]. DLNA UPnP. DLNA DLNA.

기술 이력서 2.0

13 Who am I? R&D, Product Development Manager / Smart Worker Visualization SW SW KAIST Software Engineering Computer Engineering 3

초보자를 위한 ASP.NET 2.0

thesis

Intra_DW_Ch4.PDF

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

인문사회과학기술융합학회

Data Industry White Paper

슬라이드 1

Chap7.PDF

이 드리는 혜택 완벽 을 위한 발환경 : Team Foundation Server 200 & CAL 제공 최저의 비용으로 구현을 위해 Visual Studio Team Foundation Server 200 서버 라이센스와 CAL이 에 포함되어 있습니다 을 모든 팀원이

vm-웨어-앞부속

PowerPoint Presentation

Microsoft PowerPoint - ch02_인터넷 이해와 활용.ppt

PowerPoint 프레젠테이션

미래인터넷과 창조경제에 관한 제언 65 초록 과학기술과의 융합을 통해 창조경제를 이루는 근간인 인터넷은 현재 새로운 혁신적 인터넷, 곧 미래인터넷으로 진화하는 길목에 있다. 창조와 창업 정신으로 무장하여 미래인터넷 실현에 범국가적으로 매진하는 것이 창조경제 구현의 지름

<49534F C0CEC1F520BBE7C8C4BDC9BBE720C4C1BCB3C6C320B9D D20BDC3BDBAC5DB20B0EDB5B5C8AD20C1A6BEC8BFE4C3BBBCAD2E687770>

1학년-방학활용.hwp

Transcription:

마이크로서비스아키텍처로 개발하기 안재우 Platform Architecture 팀 SK Planet

About me SK 플래닛 Platform Architecture 팀 전 NCSOFT 인프라플랫폼팀 전닷넷엑스퍼트수석컨설턴트

오늘얘기할내용은 마이크로서비스아키텍처란? 장단점은? 무엇이필요하고, 어떤점을고려해야하는지? 우리는어떻게하고있는지?

전통적인 Web App 아키텍처 WAR Browser/ Client UI A Service A Repository Database A WAS

이중화 / 로드밸런싱 WAR UI Database Browser/ Client Load balancer A Service A A Repository WAS WAS

기능추가 WAR UI Database Browser/ Client Load balancer A Service B Service A B A Repository B Repository WAS WAS

시스템연계 / 통합 WAR UI Database Browser/ Client Load balancer A Service B Service A B A Repository B Repository WAS WAS D System C System

시스템연계 / 통합 WAR UI Database Browser/ Client Load balancer A Service B Service A B A Repository B Repository WAS WAS G System E System D System C System F System

문제점 코드가너무커져서유지보수하기힘들어요. 시스템을분리하고싶어요. DB 를분리하고싶어요. 연계시스템이변경된대요. 연계시스템이장애나서우리서비스도장애예요. 사소한수정인데도전체배포를하고, QA 를거쳐야해요. 새로운걸추가하는건상관없는데, 기존로직 / 데이터를변경하면무슨문제가생길지몰라요. 저희도새로운버전 / 기술을써보고싶은데

가면갈수록 뭔가바꾸는게두려워진다. 개발자들이구닥다리기술의족쇄에서벗어나지못하고, 기술격차는계속벌어진다. 모든것은 차세대 가해결해야줄것이다. ( 정말?)

나랑상관없는상상속단어들 Domain Driven Design Continuous Delivery On-demand Virtualization Elastic, Scalable, Resilience Polyglot Programming Infrastructure Automation Agile Development Reusability Self-government Team

마이크로서비스아키텍처의배경 Domain Driven Design Continuous Delivery On-demand Virtualization Elastic, Scalable, Resilience Polyglot Programming Infrastructure Automation Agile Development Reusability Self-government Team

Scale Cube

Y 축확장 WAR UI Database A Service B Service A B A Repository B Repository WAS

Y 축확장 WAR A Service A Repository Database A UI WAS WAR B Service B Repository Database B WAS

Y 축확장 + X 축 /Z 축확장 WAR A Service A Repository Database Database A A UI A UI WAS WAS B UI B UI WAR B Service Database B1 B Repository WAS WAS Database B2

마이크로서비스란? 작고 (small) API 로다른서비스와연계하며 (communicate with APIs) 자율적이며 (autonomous) 한가지일을잘하는데초점을맞춘서비스 (focused on doing one thing well)

장점 Technology Heterogeneity Resilience Scaling Ease of Deployment Organizational Alignment Composability Replaceability

단점 Complexity Multiple Database & Transaction Management Complicated Test Require Automation for Deploy/Operation Hard to develop features span multiple services

이거 SOA 얘기아니에요? 비슷하지만, 달라요. SOA 는개념상으로는잘못되지않았어요. 다만방식이잘못되었을뿐이죠. SOAP Protocol WS-* Vendor-Driven ESB 가모든걸다해결해줄거라는잘못된믿음 ( 그렇게선전했던나쁜 XX)

MSA 는 Vendor Driven -> Service Company Driven 오픈테크놀로지기반 SOAP/XML vs. REST/JSON 스펙먼저 가아닌 현실에서검증된 Practice 들 의모음 Agile 개념과의결합 Cloud 환경의활용

마이크로서비스모델링 Domain Driven Design Bounded Context Contract-First(API-First) Design Decomposed database Event-Driven Architecture

모델링 / 구현 Tip API 를먼저정의하라. API 를 REST API Maturity Level 2 이상이되도록강제화하라. API 문서를유지하라 ( 예 : Swagger) ORM 을활용하라 DB 에너무의존하지마라 도메인내부에서만의미있는값을외부에노출하는것을지양하라 마이크로서비스가별다른설정없이바로기동가능하게하라 ( 예 : Java 의경우, Spring Boot + Embedded WAS 활용 )

클라이언트 - 서비스간통합 Client A (Web) LB LB Security Logging Version Security Logging Version MS-A MS-A MS-A MS-B Client B (App) LB Security Logging Version MS-A MS-C LB Security Logging Version MS-A MS-D

클라이언트 - 서비스간통합 Client A (Web) MS-A MS-A Security Logging Version API Gateway MS-A MS-B Client B (App) MS-A MS-C MS-A MS-D

클라이언트 - 서비스간통합 Client A (Web) LB Security Logging Security Version Logging Version API Gateway API Gateway MS-A MS-A MS-A MS-B Client B (App) LB Security Logging Security Version Logging Version API Gateway API Gateway MS-A MS-C MS-A MS-D

서비스간통신 Service A HTTP Request/Response Service B Publish Event Event (Message) Broker Subscribe Event Service C Service D

Service Discovery Client/API Gateway LB LB Security Logging Version Security Logging Version MS-A MS-A MS-A MS-B Security Client/API Gateway HA Proxy HA Proxy Service Registry Logging Version Security Logging Version MS-A MS-A MS-A MS-B

Blue/Green Deployment http://martinfowler.com/bliki/bluegreendeployment.html

MSA 를선택한이유 Frontend/Backend 분리 회사의 Engineer Tech Tree 와동기화 코드양이커지고, 중복코드가발생 코드의양을줄여서누구나쉽게파악하도록 팀전체의 Project Working Group 별 Product 시스템간연계증대 API 기반의 Contract 관리를강제화 새로운기술에대한도입욕구 Micro-Service 단위로구현에자율성부여 (Polyglot) 재사용성향상및지속적인발전 회사인프라의뒷받침 Micro-Service 단위의재사용, 자유로운리팩토링 On-Premise Cloud, CI 와연계된배포자동화 (Jarvis), 향후 Docker 와같은 Container 기술과연계

어떻게개발하나요? UserStory 검토 Contract/API 설계 Frontend 개발 Backend 개발 Mock/Unit Test Unit Test API 연동 Load Test Frontend 개발자 UserStory 종료 Backend 개발자

Contract/API 의설계 / 공유

Contract/API 의설계 / 공유 API Workspace Product Product API API API Consumer (stakeholder) Review / Share draft spec Explore & Test APIs dev draft release Design APIs API Provider Publish/Change APIs API Consumer (public)

진짜 Polyglot 을하나요? 기존시스템들의 Frontend 기존시스템들의 Backend Web Application Presentation JSP Sitemesh JQuery Controller Business Java 1.6 Tomcat 6 Spring 3.x + XML Conf. Spring MVC MyBatis Maven MySQL Data Access

네, 합니다. Java 1.7 / Tomcat 7 Spring 4.x + Java Conf. MySQL Frontend Spring Data JPA HTML Angular.js Java 1.8 / Embedded Tomcat Spring Boot Redis CSS Bootstrap Grunt Bower Spring Data JPA Node.js Express PlanetSpace (File Storage) Less Karma Groovy RabbitMQ 향후실험 (?) 후보들 Vert.x Go ASP.NET 5 Others ZooKeeper Other

개발환경의문제 개발하다보면, 여러개의마이크로서비스들을구동시켜야하는경우가많다. 마이크로서비스마다설정 / 기동방식이상이한경우, 다소괴롭다. 구동된마이크로서비스들을위한 API Gateway 를빠르게설정하기 git clone/pull 하는것도일이다.

Whitebase Developer s Machine remote machine MS-F Instance Whitebase git clone jar/js (file system) jar/js (file system) Artifact repository wget jar/js (file system) HA Proxy HA Proxy Docker Image Registry Local docker remote docker MS-A Instance MS-B Instance MS-C Instance MS-D Instance MS-E Instance

Whitebase URL-based Router + Proxy Authentication Routing Versioning Logging Composition

MSA 로진행하며얻은것 팀원들이다루는기술범위가크게확장 최신기술의도입 / 실험에부담이없음 팀원간의경험공유활성화 API 디자인능력향상 향후변화 / 확장에대해서도아키텍처적변화없이대응이가능 높은재활용성 / 조합지원 향후사내 / 대외오픈소스화가가능할듯한솔루션들

MSA 로진행시의단점 초기개발시에는개발시간이많이소요됨 MSA 로원활하게개발하기위한기반구성요소와인프라준비가필요함 기존개발방식이편하다고주장하는사람들로부터의저항 서비스간연계시협의가필요 여러서비스에걸치는기능의경우, 주체가애매한경우가생김

제언 갑자기한번에 MSA 로넘어가는것은쉽지않은작업입니다. 기존시스템에서분할이가능한항목을하나씩분할해가거나, 신규개발되는기능을하나씩마이크로서비스로분리하여추가해가는것이좋습니다. MSA 는만능이아니며, 조직문화 ( 점진적발전, 구성원들의 Skill-up 에대한관심과투자 ) 가뒷받침해줘야합니다. 조직문화가선행되지않으면차라리시도하지않는것이좋습니다.

질문 / 피드백 var you = {}; if (you.like you.dislike you.suggest you.request) { var id = "jaewoo.ahn"; var domain = "sk.com"; mail.send(string.format("{0}@{1}", id, domain )); }