Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
https://github.com/arawn/building-modular-monoliths-using-spring
SpringApplication application = new SpringApplicationBuilder()
.sources(MonolithsApplication.class)
.child(FirstServiceCon...
}
✔ 단일 프로젝트에 모든 코드가 모여있다
✔ 시스템 구조가 간결하고, 빠르게 구축할 수 있다
✔ 테스트 및 배포 파이프라인 구성이 간단하다
✔ 인프라스트럭처 구축와 운용이 간결하다
✔ 시스템을 조직 구조에 맞게 더 적절히 정렬 할 수 있다
✔ 서비스를 독립적으로 배포 또는 확장 할 수 있다
✔ 서비스 장애가 시스템 전체 장애로 전파되지 않는다
✔ 문제 해결에 특화된 다양한 기술을 도입할 수 있다
https://github.com/odrotbohm/sos
https://gotober.com/2018/sessions/515/modular-monoliths
https://engineering.shopify.com/blogs/engineering/deconstructing-monolith-designing-software-maximizes-developer-productiv...
https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)
usecase
repository
notifications
Application
Core
Ports
co...
.
https://github.com/arawn/building-modular-monoliths-using-spring
catalogs orders
shipments
.
└── orders
   ├── domain
   │   ├── entity
   │   │   ├── Order.java
   │   │   ├── OrderProdu...
https://martinfowler.com/bliki/PresentationDomainDataLayering.html
<<Interface>>
Catalogs
ShipmentOrderService
OrderCatalogService
Order
<<Interface>>
OrderProductMapper
<<Interface>>
Shipp...
https://youtu.be/dJ5C4qRqAgA
step_1: modularization
https://github.com/arawn/building-modular-monoliths-using-spring
<<Interface>>
ProductRepository
OrderCatalogService
<<Interface>>
OrderProductMapper
InMemory
ProductRepository
CatalogMan...
<<Interface>>
ProductRepository
OrderCatalogService
<<Interface>>
OrderProductMapper
InMemory
ProductRepository
CatalogMan...
service
module module module
step_2: encapsulation and separately
https://github.com/arawn/building-modular-monoliths-using-spring
Services Repositories
Root WebApplicationContext
(containing middle-tier services, datasources, etc)
DispatcherServlet
Han...
OrderCatalog Shipment
OrderCatalog Shipment
step_3: context boundaries
https://github.com/arawn/building-modular-monoliths-using-spring
OrderCatalog Shipment
step_4: modularizing configurations
https://github.com/arawn/building-modular-monoliths-using-spring
serviceservice
module module
step_5: decomposing system and stand alone services
https://github.com/arawn/building-modular-monoliths-using-spring
✓ Modular Monoliths • Simon Brown
✓ Deconstructing the Monolith • Shopify
✓ Modulithic Applications with Spring Boot • Oli...
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
우아한 모노리스
Prochain SlideShare
Chargement dans…5
×

우아한 모노리스

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

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

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

  • Soyez le premier à commenter

우아한 모노리스

  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 모듈 프로그래밍

×