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.

JavaFest. Максим Говорищев. Quarkus - make microservices "micro" again

39 views

Published on

В данный момент микросервисы уже не просто вошли в мейнстрим, а являются частью "моды" и явно перегружены хайпом. Однако далеко не всегда эти сервисы действительно являются "микро" по-размеру и количеству потребляемых ресурсов. Во многих случаях это вызвано использованием в разработке таких "прожорливых" в плане ресурсов инструментов, как например Spring Boot. Микрофреймворки призваны решить эту проблему благодаря использованию ряда концепций, которые позволяют кардинально снизить потребление ресурсов и время запуска сервиса. В рамках доклада мы внимание на одного из самых сильных игроков в растущем сегменте Java микрофреймворков - Quarkus. Рассмотрим концепции, которые лежат в основе его дизайна и позволяют, по словам разработчиков, быть "супербыстрым", программную модель, возможности интеграции с остальными частями микросервисной экосистемы и некоторые другие аспекты его работы.

Published in: Education
  • Be the first to comment

  • Be the first to like this

JavaFest. Максим Говорищев. Quarkus - make microservices "micro" again

  1. 1. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 NEW PROFESSIONAL JAVA EVENT MAY 30, 2020 KYIV, UKRAINE Quarkus – make microservices “micro” again
  2. 2. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 WHOAMI
  3. 3. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System overview 150
  4. 4. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System overview 150 15
  5. 5. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System overview 150 15
  6. 6. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  7. 7. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  8. 8. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  9. 9. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  10. 10. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  11. 11. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  12. 12. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  13. 13. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  14. 14. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  15. 15. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  16. 16. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 System architecture
  17. 17. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Existing Java Microframeworks
  18. 18. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 New player - Quarkus
  19. 19. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Evaluation dimensions • Performance - startup time
  20. 20. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Evaluation dimensions • Performance - startup time • Resources footprint – app size, memory footprint
  21. 21. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Evaluation dimensions • Performance - startup time • Resources footprint – app size, memory footprint • Integration with rest of ecosystem
  22. 22. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Evaluation dimensions • Performance - startup time • Resources footprint – app size, memory footprint • Integration with rest of ecosystem • Development experience
  23. 23. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Performance – startup time https://dzone.com/articles/micr oservices-quarkus-vs-spring-boot
  24. 24. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Performance – memory footprint https://dzone.com/articles/micr oservices-quarkus-vs-spring-boot
  25. 25. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Extension mechanism Extensions
  26. 26. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Extension mechanism Extensions Class-path modification
  27. 27. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Extension mechanism Extensions Class-path modification Build augmentation
  28. 28. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Extension mechanism Extensions Class-path modification Build augmentation Runtime init
  29. 29. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Tools under the hood GraalVM Gizmo SubstrateVM Jandex
  30. 30. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Quarkus integration pillars
  31. 31. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns RDBMS MongoDB DynamoDB S3 Hibernate Panache Business services
  32. 32. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Business services
  33. 33. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Business services Metrics Health
  34. 34. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Business services Open API
  35. 35. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Business services Eureka
  36. 36. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Business services Fault Tolerance
  37. 37. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microprofile fault-tolerance features • Timeout: Defines a timeout for the execution of a service call
  38. 38. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microprofile fault-tolerance features • Timeout: Defines a timeout for the execution of a service call • Fallback: Provides a contingency solution when a failure occurs
  39. 39. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microprofile fault-tolerance features • Timeout: Defines a timeout for the execution of a service call • Fallback: Provides a contingency solution when a failure occurs • Retry: Allows you to retry execution based on criteria
  40. 40. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microprofile fault-tolerance features • Timeout: Defines a timeout for the execution of a service call • Fallback: Provides a contingency solution when a failure occurs • Retry: Allows you to retry execution based on criteria • Bulkhead: Isolates partial service failures while the rest of the system can still work
  41. 41. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microprofile fault-tolerance features • Timeout: Defines a timeout for the execution of a service call • Fallback: Provides a contingency solution when a failure occurs • Retry: Allows you to retry execution based on criteria • Bulkhead: Isolates partial service failures while the rest of the system can still work • Circuit Breaker: Defines criteria for automatic fast-fails to prevent system degradation caused by overloading
  42. 42. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Config Management Business services Config
  43. 43. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns JWT Authentication Oauth 2.0 OpenID Connect Deployment Config Management Business services
  44. 44. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Config Management Business services
  45. 45. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Metrics Pull-based mechanism Hierarchical & dimensional support Deployment Config Management Business services
  46. 46. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Microservice concerns Deployment Config Management Business services OpenTracing
  47. 47. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Demo
  48. 48. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Issues • Quarkus and GraalVM compatibility
  49. 49. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Issues • Quarkus and GraalVM compatibility • Limited support of CDI spec (and others?)
  50. 50. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Issues • Quarkus and GraalVM compatibility • Limited support of CDI spec (and others?) • Bias towards RedHat native tools and libs
  51. 51. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Issues • Quarkus and GraalVM compatibility • Limited support of CDI spec (and others?) • Bias towards RedHat native tools and libs • Lack of official NetflixOSS extensions
  52. 52. NEW PROFESSIONAL JAVA EVENT KYIV, 2020 Conclusions
  53. 53. NEW PROFESSIONAL JAVA EVENT KYIV, 2020

×