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.

우아한 모노리스

마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 아이디어와 코드를 공유합니다.

https://github.com/arawn/building-modular-monoliths-using-spring

이 자료는 2019년 KSUG 세미나에서 진행한 "잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다"를 기반으로 몇가지 내용을 추가하고, 전개 방식을 다듬어 조금 더 친절하게 만들어졌습니다.

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

우아한 모노리스

  1. 1. https://github.com/arawn/building-modular-monoliths-using-spring
  2. 2. SpringApplication application = new SpringApplicationBuilder() .sources(MonolithsApplication.class) .child(FirstServiceConfiguration.class) .sibling(SecondServiceConfiguration.class) .sibling(ThirdServiceConfiguration.class) .build(); application.run(args);
  3. 3. }
  4. 4. ✔ 단일 프로젝트에 모든 코드가 모여있다 ✔ 시스템 구조가 간결하고, 빠르게 구축할 수 있다 ✔ 테스트 및 배포 파이프라인 구성이 간단하다 ✔ 인프라스트럭처 구축와 운용이 간결하다
  5. 5. ✔ 시스템을 조직 구조에 맞게 더 적절히 정렬 할 수 있다 ✔ 서비스를 독립적으로 배포 또는 확장 할 수 있다 ✔ 서비스 장애가 시스템 전체 장애로 전파되지 않는다 ✔ 문제 해결에 특화된 다양한 기술을 도입할 수 있다
  6. 6. https://github.com/odrotbohm/sos
  7. 7. https://gotober.com/2018/sessions/515/modular-monoliths
  8. 8. https://engineering.shopify.com/blogs/engineering/deconstructing-monolith-designing-software-maximizes-developer-productivity
  9. 9. https://en.wikipedia.org/wiki/Hexagonal_architecture_(software) usecase repository notifications Application Core Ports commands jdbc/restful message/email message restful/userinterface Ý
  10. 10. . https://github.com/arawn/building-modular-monoliths-using-spring
  11. 11. catalogs orders shipments . └── orders    ├── domain    │   ├── entity    │   │   ├── Order.java    │   │   ├── OrderProduct.java    │   │   ├── OrderProductMapper.java    │   │   ├── OrderRepository.java    │   │   └── ShippingDesk.java    │   └── usecase    │   ├── Orders.java    │   └── OrderProcessing.java   ├── integrate    ├── data    └── web . └── catalogs    ├── domain   ├── integrate    ├── data    └── web . └── shipments    ├── domain   ├── integrate    ├── data    └── web
  12. 12. https://martinfowler.com/bliki/PresentationDomainDataLayering.html
  13. 13. <<Interface>> Catalogs ShipmentOrderService OrderCatalogService Order <<Interface>> OrderProductMapper <<Interface>> ShippingDesk CatalogManager <<Interface>> DeliveryProcessingDeliveryManager catalogs orders shipments
  14. 14. https://youtu.be/dJ5C4qRqAgA
  15. 15. step_1: modularization https://github.com/arawn/building-modular-monoliths-using-spring
  16. 16. <<Interface>> ProductRepository OrderCatalogService <<Interface>> OrderProductMapper InMemory ProductRepository CatalogManager <<Interface>> Catalogs
  17. 17. <<Interface>> ProductRepository OrderCatalogService <<Interface>> OrderProductMapper InMemory ProductRepository CatalogManager <<Interface>> Catalogs
  18. 18. service module module module
  19. 19. step_2: encapsulation and separately https://github.com/arawn/building-modular-monoliths-using-spring
  20. 20. Services Repositories Root WebApplicationContext (containing middle-tier services, datasources, etc) DispatcherServlet HandlerMapping Controllers ViewResolver Servlet WebApplicationContext (containing controllers, view resolvers, and other web-related beans)
  21. 21. OrderCatalog Shipment
  22. 22. OrderCatalog Shipment
  23. 23. step_3: context boundaries https://github.com/arawn/building-modular-monoliths-using-spring
  24. 24. OrderCatalog Shipment
  25. 25. step_4: modularizing configurations https://github.com/arawn/building-modular-monoliths-using-spring
  26. 26. serviceservice module module
  27. 27. step_5: decomposing system and stand alone services https://github.com/arawn/building-modular-monoliths-using-spring
  28. 28. ✓ Modular Monoliths • Simon Brown ✓ Deconstructing the Monolith • Shopify ✓ Modulithic Applications with Spring Boot • Oliver Drotbohm ✓ 패턴 지향 소프트웨어 아키텍처 ✓ 클린 아키텍처 ✓ 마이크로서비스 아키텍처 구축 ✓ 도메인 주도 설계 핵심 ✓ 오브젝트: 코드로 이해하는 객체지향 설계 ✓ 자바 9 모듈 프로그래밍

    Be the first to comment

    Login to see the comments

  • ssuserf82b2e

    Feb. 5, 2020
  • YeongjunKim2

    Feb. 5, 2020
  • OhjoonSung

    Feb. 5, 2020
  • gavin612

    Feb. 5, 2020
  • agentahn

    Feb. 6, 2020
  • jonghyunpark944023

    Feb. 6, 2020
  • doramong

    Feb. 6, 2020
  • SunghwanCho8

    Feb. 6, 2020
  • InCheolJeong5

    Feb. 6, 2020
  • HeejinKim25

    Feb. 7, 2020
  • balladofgale

    Feb. 9, 2020
  • ssuserb4ed731

    Feb. 10, 2020
  • nalkae

    Feb. 17, 2020
  • kcando

    Feb. 24, 2020
  • HanDongChoi1

    Jul. 5, 2020
  • TaehwaLee7

    Oct. 17, 2020
  • ssuser6d95e7

    Oct. 18, 2020
  • junhyeonsong

    Nov. 10, 2020
  • boajang

    Jan. 26, 2021
  • ssuser32b5c8

    Feb. 3, 2021

마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 아이디어와 코드를 공유합니다. https://github.com/arawn/building-modular-monoliths-using-spring 이 자료는 2019년 KSUG 세미나에서 진행한 "잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다"를 기반으로 몇가지 내용을 추가하고, 전개 방식을 다듬어 조금 더 친절하게 만들어졌습니다.

Views

Total views

7,813

On Slideshare

0

From embeds

0

Number of embeds

801

Actions

Downloads

70

Shares

0

Comments

0

Likes

35

×