Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spring boot와 docker를 이용한 msa

자바카페 2015 OPEN 세미나 발표자료입니다.

  • Be the first to comment

Spring boot와 docker를 이용한 msa

  1. 1. 2015 자바카페 OPEN SEMINAR SpringBoot와 Docker를 이용한 MSA JAVACAFE 김흥래
  2. 2. 2015 자바카페 OPEN SEMINAR발표자 김흥래 (Naver Business Platform) 삼성전자와 군인공제회 C&C를 거쳐 현재 NAVER에서 사내인프라를 개발하고 있습니다. 항상 새로운 것을 배우는 것을 좋아하고 프로그래머가 천직이라고 생각하고 있는 행복한 프로그래머입니다. JAVACAFE 커뮤니티에서 10년 넘는 세월 동안 활동하고 있으며 Back-End와 Front-End 전 분야를 아우르는 개발자가 되기 위해 노력하고 있습니다. hrkim3468@gmail.com
  3. 3. 2015 자바카페 OPEN SEMINAROverview SpringBoot Docker MSA (Micro Service Architecture) 실전! 빙고게임
  4. 4. 2015 자바카페 OPEN SEMINAR SpringBoot Docker MSA (Micro Service Architecture) 실전! 빙고게임
  5. 5. 2015 자바카페 OPEN SEMINARFeatures WSA 의존 없이 Stand-Alone 형태의 Spring 어플리케이션을 만들 수 있다. Embedded Tomcat을 이용하여 즉시 실행이 가능하다. (WAR 파일로 Deploy하는 과정이 불필요) 강력한 Annotation 기반의 Java Configuration을 제공하기 때문에 XML 설정이 불필요하다. 개발환경 구성시 Maven Configuration을 추상화 하여 의 존성 관리가 매우 간단하다. (라이브러리 의존성 관리를 자동화)
  6. 6. 2015 자바카페 OPEN SEMINARDemo 한번 만들어 볼까요?
  7. 7. 2015 자바카페 OPEN SEMINAR 공식메뉴얼 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ 몇 일 전까지 1.2.7 이었는데 릴리즈 속도가…. Release (2015. 11)
  8. 8. 2015 자바카페 OPEN SEMINARSpringBoot 1.3.0 요구사항  Java7+  Spring Framework 4.1.5 +  Maven (3.2+) or Gradle (1.12+)  Servlet 3.0 +
  9. 9. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts Spring과 통합을 위해 제공되는 각종 Template들의 설정 정보를 미리 구현하여 제공 자동 설정을 위해 내부적으로 제공되는 설정정보 Library 인기있는 대부분의 기술들에 대한 설정 정보가 기본적으로 제공 추가적인 기술에 대한 설정 정보를 제공하는 것도 가능 (확장) spring-boot-autoconfigure.jar
  10. 10. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts
  11. 11. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts
  12. 12. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts
  13. 13. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts
  14. 14. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts
  15. 15. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts 프로젝트 구성시 반복적으로 설정해야 하는 Config 정보들 은 이미 대부분 정해져 있고 프로젝트 생성시마다 동일하게 사용 하고 있다. (복사 & 붙여넣기)  Web 프로젝트 구성시 필요한 라이브러리  Spring-core, Spring-web, Spring-mvc, jakson(JSON), JDBC  Test 프로젝트 구성시 필요한 라이브러  Junit, Spring-core, Spring-test, mockito
  16. 16. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts SpringBoot에서는 이러한 점에 착안하여 spring-boot-starter를 프레임워크 레벨에서 제공 프로젝트 성격에 따라 사용되는 기술들의 패턴을 규격화 하여 미리 설정된 Config 코드를 Maven으로 제공
  17. 17. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts Spring-boot-starter는 3가지로 구성  Spring-boot-starter-parent  Spring-boot-starter  Spring-boot-starter-xxx
  18. 18. 2015 자바카페 OPEN SEMINAR Basic Starter SpringBoot Application Starts
  19. 19. 2015 자바카페 OPEN SEMINAR Starter POMs를 이용하여 Spring Boot에서 자동으로 필요한 라이브러리 구성 spring-boot-starter는 모든 Starter의 Base Starter SpringBoot Application Starts
  20. 20. 2015 자바카페 OPEN SEMINAR Web서비스를 위해 확장 된 Starter SpringBoot Application Starts
  21. 21. 2015 자바카페 OPEN SEMINAR Spring-boot-starter가 Web 서비스용으로 확장되어 있다. SpringMVC와 Embedded Tomcat이 자동으로 추가되어 있다. SpringBoot Application Starts
  22. 22. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts 공식적으로 제공하는 Starter http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter-poms
  23. 23. 2015 자바카페 OPEN SEMINARSpringBoot Application Starts 커뮤니티에서 자체 개발하여 추가적으로 제공하는 Starter https://github.com/spring-projects/spring-boot/tree/master/spring-boot-starters
  24. 24. 2015 자바카페 OPEN SEMINARStart POMs Generator SpringBoot는 프로젝트 생성시 Start POMs를 좀더 쉽게 사용 하기 위한 Generator를 추가적으로 제공한다. 1. 웹사이트에서 제공하는 툴 http://start.spring.io/ 생성된 프로젝트 소스를 zip 파일로 생성하여 다운로드 2. STS 개발툴 옵션으로 제공하는 툴 File > New > Spring Starter Project 바로 실행 가능한 프로젝트 소스 생성
  25. 25. 2015 자바카페 OPEN SEMINARStart POMs Generator
  26. 26. 2015 자바카페 OPEN SEMINARStart POMs Generator
  27. 27. 2015 자바카페 OPEN SEMINAR@SpringBootApplication SpringBoot에서 제공하는 고도로 추상화 된 Annotation @SpringBootApplication 하나만 넣어주면 모든 설정이 완료됨
  28. 28. 2015 자바카페 OPEN SEMINAR@SpringBootApplication Servlet 3.0 부터 제공하는 ServletInitialize 기능을 이용하여 web.xml을 자바 코드로 변경하는 것이 가능해짐 (WebApplicationInitializer) Java Config는 Boot가 제공하는 기능이 아니라 Spirng Core에서 제공하는 기능이지만 Boot에서는 기본적으로 Java Config를 사용한다는 가정으로 동작함 Boot가 고도로 추상화된 Annotation을 제공하기 때문에 Spring 설정에서 해방될 수 있 지만 정확한 원리를 모르면 최적화가 어려울 수 있음 @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan http://docs.spring.io/spring/docs/3.1.0.M2/javadoc-api/org/springframework/web/WebApplicationInitializer.html
  29. 29. 2015 자바카페 OPEN SEMINARProgrammable Tomcat Config
  30. 30. 2015 자바카페 OPEN SEMINARProgrammable Tomcat Config
  31. 31. 2015 자바카페 OPEN SEMINAR독립실행 가능한 JAR SpringBoot는 특별한 Launcher를 이용하여 독립된 형태로 실행 이 가능  JarLauncher  WarLauncher 실행파일 내부에 의존성이 있는 라이브러리들이 repackage 작업 을 통하여 별도의 디렉토리 구조로 복사되어 빌드  SpringBoot Maven Plugin Spring-boot:run Spring-boot:repackage  org.springframework.boot.loader.jar.JarFile Jar 형태의 경우 최상단에 별도의 lib 디렉토리를 별도로 분리 War 형태의 경우 lib 디렉토리와 lib-provided 디렉토리로 분리
  32. 32. 2015 자바카페 OPEN SEMINAR독립실행 가능한 JAR
  33. 33. 2015 자바카페 OPEN SEMINAR독립실행 가능한 JAR
  34. 34. 2015 자바카페 OPEN SEMINAR독립실행 가능한 JAR http://docs.spring.io/spring-boot/docs/1.2.0.BUILD-SNAPSHOT/maven-plugin/index.html
  35. 35. 2015 자바카페 OPEN SEMINAR기타  내부에 Embed Tomcat이 내장되어 있으므로 별도의 Deploy 과정 없이 JAR 파일을 독립적으로 배포하여 웹 서비스가 가능함  Java –jar myapp.jar  WAS에 배포하는 방식도 지원 http://spring.io/guides/gs/convert-jar-to-war/  도커랑 찰떡궁합  배포된 Jar 파일을 포함한 도커 이미지를 컨테이너로 생성  원하는 시점에 원하는 만큼의 컨테이너를 손쉽게 증감 가능  Scale-Out에 손쉬운 대응이 가능함
  36. 36. 2015 자바카페 OPEN SEMINAR기타  설치형 Tomcat과 Embed Tomcat의 성능 차이는?  http://people.apache.org/~markt/presentations/2010-11-04-Embedding- Tomcat.pdf  릴리즈된 Tomcat Core 코드를 인터페이스만 변경하여 재배포하는 방식 최신 SpringBoot에서는 Tomcat 8.0.28 버전이 포함되어 있다.
  37. 37. 2015 자바카페 OPEN SEMINAR SpringBoot Docker MSA (Micro Service Architecture) 실전! 빙고게임
  38. 38. 2015 자바카페 OPEN SEMINAR소개
  39. 39. 2015 자바카페 OPEN SEMINAR도커 컨테이너 출처 http://www.theregister.co.uk/2015/01/07/asigra_dockerises_cloud_backup/
  40. 40. 2015 자바카페 OPEN SEMINARDockerfile
  41. 41. 2015 자바카페 OPEN SEMINAR SpringBoot Docker MSA (Micro Service Architecture) 실전! 빙고게임
  42. 42. 2015 자바카페 OPEN SEMINARMonolithic Architecture Architecture를 어떻게 설계해야 좋을까요? 자바카페 개발팀에서 대박을 노리고 다양한 게임을 서비스하기 위해 준비하고 있습니다.
  43. 43. 2015 자바카페 OPEN SEMINARMonolithic Architecture 일반적인 응용프로그램  핵심 Business Logic  다수의 외부 Interface Adapter 간단한 테스트 & 배포  단일 서비스에 대한 Test Case  패키징 된 응응 프로그램을 단순 복사하여 배포 손쉬운 확장  비교적 간단한 부하 분산 구성 가능  L4 뒤에 여러 복사본을 세트로 연결 프로젝트 초기 단계에서는 여전히 좋은 선택 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  44. 44. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지 고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)
  45. 45. 2015 자바카페 OPEN SEMINARScale Cube 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  46. 46. 2015 자바카페 OPEN SEMINARScale Cube X-axis Scaling  수평적인 복제 (Horizontal Duplication)  복제본을 이용한 확장 (Scale by cloning) 현실속의 X축 확장  L4 뒤에 다수의 어플리케이션 복제본을 세트로 구성  N개의 복제본이 있다면 이론적으로 1/N의 부하분산
  47. 47. 2015 자바카페 OPEN SEMINARScale Cube  X-axis Scaling 웹서버 사용자 요청 서비스 DB
  48. 48. 2015 자바카페 OPEN SEMINARScale Cube  X-axis Scaling 웹서버 사용자 요청 서비스 DB 웹서버 서비스 L4
  49. 49. 2015 자바카페 OPEN SEMINARScale Cube X-axis Scaling  수평적인 복제 (Horizontal Duplication)  복제본을 이용한 확장 (Scale by cloning) 현실속의 X축 확장  L4 뒤에 다수의 어플리케이션 복제본을 세트로 구성  N개의 복제본이 있다면 이론적으로 1/N의 부하분산 생각해 봅시다  100개의 컴포넌트를 서비스하는데 1개의 컴포넌트만 대박 날 경 우 부하분산을 위해서 무작정 확장한다면?  불필요한 99개의 확장 비용은?
  50. 50. 2015 자바카페 OPEN SEMINARScale Cube Y-axis Scaling  기능 분해(Functional Decomposition)  서비스 분리를 이용한 확장 (Scale by splitting different things) 현실속의 Y축 확장  어플리케이션 내부의 컴포넌트를 다수의 어플리케이션으로 분할하여 서비스  분할 된 서비스는 하나 또는 그 이상의 기능을 명확한 기준으로 나눈다.  독립적인 서비스들은 API를 통하여 통신한다.
  51. 51. 2015 자바카페 OPEN SEMINARScale Cube  Y-axis Scaling 웹서버 사용자 요청 서비스 DB
  52. 52. 2015 자바카페 OPEN SEMINARScale Cube  Y-axis Scaling 웹서버 사용자 요청 서비스 A DB B서비스 B 서비스 C 서비스 C DB A DB C
  53. 53. 2015 자바카페 OPEN SEMINARScale Cube Y-axis Scaling  기능 분해(Functional Decomposition)  서비스 분리를 이용한 확장 (Scale by splitting different things) 현실속의 Y축 확장  어플리케이션 내부의 컴포넌트를 다수의 어플리케이션으로 분할하여 서비스  분할 된 서비스는 하나 또는 그 이상의 기능을 명확한 기준으로 나눈다.  독립적인 서비스들은 API를 통하여 통신한다. 생각해 봅시다  독립적인 서비스간의 데이터 조인이 필요하다면 어떻게 해야 할까?  만약 조인해야 하는 서비스가 100개라면?
  54. 54. 2015 자바카페 OPEN SEMINARScale Cube Z-axis Scaling  데이터 파티션(Data Partitioning)  데이터 분리를 이용한 확장 (Scale by splitting similar things) 현실속의 Z축 확장  데이터베이스 데이터를 분할하여 서비스  Table Partitioning  DB Sharding  X축 확장과 비슷하게 N개의 복제본으로 확장하는 측면에서는 비슷함  각각의 복제본은 데이터의 일부만 책임진다.
  55. 55. 2015 자바카페 OPEN SEMINARScale Cube  Z-axis Scaling 웹서버 사용자 요청 서비스 A 서비스 B DB
  56. 56. 2015 자바카페 OPEN SEMINARScale Cube  Z-axis Scaling 사용자 요청 웹서버 서비스 A 서비스 B DB 웹서버 서비스 A 서비스 B L4
  57. 57. 2015 자바카페 OPEN SEMINARScale Cube Z-axis Scaling  데이터 파티션(Data Partitioning)  데이터 분리를 이용한 확장 (Scale by splitting similar things) 현실속의 Z축 확장  데이터베이스 데이터를 분할하여 서비스  Table Partitioning  DB Sharding  X축 확장과 비슷하게 N개의 복제본으로 확장하는 측면에서는 비슷함  각각의 복제본은 데이터의 일부만 책임진다. 생각해 봅시다  파티셔닝 된 데이터가 성장하여 또 다시 파티셔닝 해야 할 경우 어플리케이션 복잡도는?  개발환경과 리얼환경의 데이터가 다르다면 테스트는 어떻게 해야할까?
  58. 58. 2015 자바카페 OPEN SEMINARScale Cube Micro Service (WAS 분리) Clustering Service (WAS 복제) Table Partitioning DB Sharding (DB 분리) 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  59. 59. 2015 자바카페 OPEN SEMINARMonolithic Architecture 다시 자바카페 개발팀으로 가볼까요?
  60. 60. 2015 자바카페 OPEN SEMINARMonolithic Architecture
  61. 61. 2015 자바카페 OPEN SEMINARMonolithic Architecture 서비스 유연성을 위해서 Architecture를 어떻게 변경해 볼까요?
  62. 62. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)
  63. 63. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  Scale Cube Y축 확장을 통하여 서비스를 분리하고 분리된 코드는 자신의 서비스만 책임진다.  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)
  64. 64. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  Scale Cube Y축 확장을 통하여 서비스를 분리하고 분리된 코드는 자신의 서비스만 책임진다.  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  서비스가 작게 분리되면 각각의 어플리케이션 구동 시간은 짧아진다.  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)
  65. 65. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  Scale Cube Y축 확장을 통하여 서비스를 분리하고 분리된 코드는 자신의 서비스만 책임진다.  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  서비스가 작게 분리되면 각각의 어플리케이션 구동 시간은 짧아진다.  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  서비스 단위로 기능 확장, 리팩토링, 버그수정 및 배포가 쉬워진다.  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)
  66. 66. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  Scale Cube Y축 확장을 통하여 서비스를 분리하고 분리된 코드는 자신의 서비스만 책임진다.  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  서비스가 작게 분리되면 각각의 어플리케이션 구동 시간은 짧아진다.  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  서비스 단위로 기능 확장, 리팩토링, 버그수정 및 배포가 쉬워진다.  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  특정 서비스만 확장하는 것이 가능해진다.  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)
  67. 67. 2015 자바카페 OPEN SEMINARMonolithic Architecture 시간이 흘러 서비스가 성장하여 개발팀의 규모가 커지고 Business Logic도 점점 더 복잡해진다면?  큰 모놀리틱 코드 기반의 서비스는 개발자를 위축시킨다. (특히 신입들)  Scale Cube Y축 확장을 통하여 서비스를 분리하고 분리된 코드는 자신의 서비스만 책임진다.  어플리케이션의 크기가 커지면 커질수록 구동하는데 시간이 많이 소요된다. (개발시 생산성 하락)  서비스가 작게 분리되면 각각의 어플리케이션 구동 시간은 짧아진다.  지속적인 배포가 점점더 어려워진다. (소스코드 한줄만 고쳐도 전체 서비스를 내렸다 올려야 함)  서비스 단위로 기능 확장, 리팩토링, 버그수정 및 배포가 쉬워진다.  Scale 확장시 특정 컴포넌트만 확장하는 것이 불가능 (비효율적이고 불필요한 확장 비용 발생)  특정 서비스만 확장하는 것이 가능해진다.  전체적인 안정성이 점점 더 중요해지므로 신기술 도입이 점점 더 어려워 지고 보수적인 접근을 하게 된다. (개발팀의 기술 정체)  서비스 단위로 기술 Stack을 선택하는 것이 가능해지고 기술 도입 실패시에도 전체 서비스에 영향이 적어 쉽게 롤백하거나 재개발 하는 것이 가능해진다.
  68. 68. 2015 자바카페 OPEN SEMINARMicro Service Architecture 서비스 단위로 응용프로그램을 분리  Business Logic을 다수의 서비스로 분리  서비스 단위로 책임을 가짐  서비스간에 API 통신 API Gateway  다수의 서비스에 공통으로 필요한 기능 제공 (인증, 로깅, 보안정책)  모든 서비스들의 API를 등록하고 서비스 간에 통신을 중앙 통제 서비스 단위의 손쉬운 확장  부하 분산이 필요할 경우 서비스 단위로 확장이 가능  서비스 확장 후 API Gateway에 통보 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8 지속적으로 성장하는 서비스라면 MSA를 추천합니다.
  69. 69. 2015 자바카페 OPEN SEMINARMicro Service Architecture MSA로 구축된 서비스가 더욱 더 성장하여 단위 서비스가 매우 많아진다면?  API Gateway에 장애가 발생될 경우 서비스 전체가 마비 될 위험성이 있다. (이중화 무조건 필수)  서비스 규모에 비례하여 API Gateway에 트래픽이 더욱 더 집중된다. (우리회사 최고 트래픽을 내는 서비스는?)  단위 서비스가 늘어날수록 내부 연계와 트래픽은 기하급수적으로 증가한다.  다수의 서비스간에 조인이 필요한 업무가 생기면 성능 문제를 고려해야 한다. (어떻게?)
  70. 70. 2015 자바카페 OPEN SEMINARMSA at Netflx 출처 http://techblog.netflix.com/2013/01/announcing-ribbon-tying-netflix-mid.html
  71. 71. 2015 자바카페 OPEN SEMINARMSA at Netflx 출처 https://blog.docker.com/2014/12/dockercon-europe-keynote-state-of-the-art-in-microservices-by-adrian- cockcroft-battery-ventures/
  72. 72. 2015 자바카페 OPEN SEMINAR단일 서비스 배포 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  73. 73. 2015 자바카페 OPEN SEMINAR서비스 기반 Database 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  74. 74. 2015 자바카페 OPEN SEMINARAPI Gateway 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  75. 75. 2015 자바카페 OPEN SEMINARSync Interaction 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  76. 76. 2015 자바카페 OPEN SEMINARAsync Interaction 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  77. 77. 2015 자바카페 OPEN SEMINARService Registry 출처 https://www.nginx.com/blog/introduction-to-microservices/#gs.mfQz0k8
  78. 78. 2015 자바카페 OPEN SEMINAR SpringBoot Docker MSA (Micro Service Architecture) 실전! 빙고게임
  79. 79. 2015 자바카페 OPEN SEMINAR빙고게임 Architecture SR Service Registry 미구현 QUEUE Ranking DB Rank 랭킹 서비스 Rest API AMQP User 사용자 서비스 User DB Rest API AMQP Game 빙고게임 서비스 Game DB Rest API AMQP API Gateway AMQP Rest API Front End 프론트엔드 UI AMQP Rest API Web Socket 사용자 브라우저 Web Socket 내부망외부망
  80. 80. 2015 자바카페 OPEN SEMINAR Thank You

×