$30 off During Our Annual Pro Sale. View Details »

Митя Александров — Microprofile.io не спрингом единым

Moscow JUG
October 23, 2019

Митя Александров — Microprofile.io не спрингом единым

Необходимо написать микросервис на Java? Первое, что приходит в голову, — взять Spring Boot, быстро набросать пару строк и в продакшн!

И никто не задумывается, что существует даже более легкая и, что немаловажно, стандартизованная альтернатива, причем на основе Java (Jakarta) EE. Чтобы это стало возможно, под эгидой microprofile.io собрались несколько вендоров EE-серверов и разработали поистине легковесную спецификацию, специально заточенную именно под микросервисы.

Имплементации этой спецификации от разных компаний способны работать на спектре оборудования от Raspberry Pi до огромных кластеров. Эта спецификация оказалась успешна и продолжает развиваться, предлагая новые, крайне полезные фичи прямо из коробки.

Moscow JUG

October 23, 2019
Tweet

More Decks by Moscow JUG

Other Decks in Programming

Transcript

  1. Microprofile.io
    не спрингом единым
    Микросервисы можно писать и не на буте

    View Slide

  2. 2
    Дмитрий Александров
    Старший проектировщик информационных систем
    @bercut2000

    View Slide

  3. На основе Hands-on Lab,
    созданной вместе с
    Иваном Ивановым
    https://github.com/bgjug/microprofile-h
    ol-1x
    3

    View Slide

  4. Disclaimer в стиле Оракула:
    ● Андрей немного льстил, что я мегакрутой спикер
    ● Тут мы будем запускать кучи микросервисов, все
    может падать (Demo Gods)
    ● Часто путаю русские слова
    4

    View Slide

  5. Представьте себе невероятное:
    Нам надо написать веб приложение!
    5

    View Slide

  6. Естественно надо разбить все на
    микросервисы
    6

    View Slide

  7. Мы все ОЧЕНЬ МНОГО слышали
    про микросервисы
    7

    View Slide

  8. Но их надо как-то писать!
    8

    View Slide

  9. Прориворугатель:
    На этом докладе мы НЕ будем рассуждать:
    ● что такое микросервис
    ● чем он лучше или хуже других
    ● зачем та или иная технология
    9

    View Slide

  10. View Slide

  11. Наш основной вопрос: как?
    11

    View Slide

  12. ,а не зачем?
    12

    View Slide

  13. Демо 1
    13

    View Slide

  14. 14
    GUI
    Subscribers
    Authors
    Content
    Users
    Magazine Manager

    View Slide

  15. Это надо сделать модно и красиво!
    15

    View Slide

  16. Node? … Go?
    16

    View Slide

  17. .. нее, у нас Java стек!
    17

    View Slide

  18. .. ну тогда естественно!
    18

    View Slide

  19. А что еще? Не Вебсферу же
    прикручивать?!
    19

    View Slide

  20. А что еще? Не Вебсферу же
    прикручивать?!
    (хотя об этом позже...)
    20

    View Slide

  21. Собственно, а что такое..
    21

    View Slide

  22. Спринг буут
    Spring Boot это Spring-овое convention-over-configuration решение для
    создания stand-alone, production-grade Spring-овых приложений, которые
    можно "просто запускать". Оно уже преконфигурировано под “оптимальное”
    исполнение наиболее стандартных приложений. Почти не нужно
    конфигурировать..
    22

    View Slide

  23. Спринг буут
    Крутое, потому что:
    ● Stand-alone
    23

    View Slide

  24. Спринг буут
    Крутое, потому что:
    ● Stand-alone
    ● Embed Tomcat или Jetty (не нужно деплоить WAR)
    24

    View Slide

  25. Спринг буут
    Крутое, потому что:
    ● Stand-alone
    ● Embed Tomcat или Jetty (не нужно деплоить WAR)
    ● Предоставляет 'starter' POMs, чтобы не путаться
    25

    View Slide

  26. Спринг буут
    Крутое, потому что:
    ● Stand-alone
    ● Embed Tomcat или Jetty (не нужно деплоить WAR)
    ● Предоставляет 'starter' POMs, чтобы не путаться
    ● Автоматическая конфигурация Spring
    26

    View Slide

  27. Спринг буут
    Крутое, потому что:
    ● Stand-alone
    ● Embed Tomcat или Jetty (не нужно деплоить WAR)
    ● Предоставляет 'starter' POMs, чтобы не путаться
    ● Автоматическая конфигурация Spring
    ● Полезные плюшки metrics, health checks и externalized configuration
    27

    View Slide

  28. Спринг буут
    Крутое, потому что:
    ● Stand-alone
    ● Embed Tomcat или Jetty (не нужно деплоить WAR)
    ● Предоставляет 'starter' POMs, чтобы не путаться
    ● Автоматическая конфигурация Spring
    ● Полезные плюшки metrics, health checks и externalized configuration
    ● Вообще нет кодогенерации и не нужна XML конфигурация
    28

    View Slide

  29. По идее, Спринг прекрасен!
    29

    View Slide

  30. По идее, Спринг прекрасен!
    И так думают все!
    30

    View Slide

  31. По идее, Спринг прекрасен!
    И так думают все!
    И не без почвы!
    31

    View Slide

  32. Демо 2
    32

    View Slide

  33. Но .. он один такой?
    33

    View Slide

  34. Как я перестал бояться
    и начал любить ЕЕ
    34

    View Slide

  35. ЕЕ:
    35

    View Slide

  36. ЕЕ:
    36

    View Slide

  37. Потом Вы сами знаете, что случилось!
    37

    View Slide

  38. 38

    View Slide

  39. 39

    View Slide

  40. ЕЕ:
    40

    View Slide

  41. А что там у спринга:
    41

    View Slide

  42. У них тоже много чего:
    42

    View Slide

  43. Кстати, мы тут немного не об этом..
    43

    View Slide

  44. Нам нужно написать несколько
    микросервисов и заставить их
    работать вместе!
    44

    View Slide

  45. Зачем поднимать все это безумие,
    если нужно совсем немного..
    45

    View Slide

  46. Так подумали несколько кантор:
    46

    View Slide

  47. Так подумали несколько кантор:
    47

    View Slide

  48. 48

    View Slide

  49. Ну это же все тоже самое ЕЕ!
    49

    View Slide

  50. 50

    View Slide

  51. об чем:
    ● Eclipse MicroProfile это open-source community specification для Enterprise
    Java Microservices
    51

    View Slide

  52. об чем:
    ● Eclipse MicroProfile это open-source community specification для Enterprise
    Java Мicroservices
    ● Сообщество частных лиц, организаций и разработчиков, работающих в
    рамках проекта с открытым исходным кодом (Eclipse), для Enterprise
    Java Мicroservices
    52

    View Slide

  53. Основные концепции:
    ● Минималистичный Fat jar
    53

    View Slide

  54. Основные концепции:
    ● Минималистичный Fat jar
    ● Минимальная (или полностью отсутствующая) конфигурация
    54

    View Slide

  55. Основные концепции:
    ● Минималистичный Fat jar
    ● Минимальная (или полностью отсутствующая) конфигурация
    ● Портабильность!
    55

    View Slide

  56. Сели и подумали:
    что из этого всего нужно для
    написания микросервиса?
    56

    View Slide

  57. MicroProfile 1.0 (Sep, 2016)
    MicroProfile 1.0
    JAX-RS 2.0
    JSON-P 1.0
    CDI 1.2
    57

    View Slide

  58. MicroProfile 1.0 (Sep, 2016)

    io.microprofile
    microprofile
    1.0.0
    provided
    pom

    compile group: 'io.microprofile', name: 'microprofile', version:
    '1.0.0', ext: 'pom' 58

    View Slide

  59. Если сервер сертифицирован по (или
    пишет, что поддерживает)
    Microprofile 1.0 – просто запускаем
    приложение!
    59

    View Slide

  60. Демо 3
    60

    View Slide

  61. Портабильный код… но не
    конфигурация..
    61

    View Slide

  62. Eclipse MicroProfile 1.1 (Aug, 2017)
    MicroProfile 1.1
    JAX-RS 2.0
    JSON-P 1.0
    CDI 1.2
    Config 1.0
    = New
    = No change from last release
    62

    View Slide

  63. Конфигурация
    логично выносить конфигурацию из программы, но каждый сервер
    конфигурится по-своему..
    Dev
    Test
    Prod
    63

    View Slide

  64. Конфигурация
    ● DeltaSpike Config
    (http://deltaspike.apache.org/documentation/configuration.html)
    ● Extracted parts of DeltaSpike Config (https://github.com/struberg/javaConfig/)
    ● Apache Tamaya (http://tamaya.incubator.apache.org/)
    ● Sabot, merged into Tamaya (https://tomitribe.io/p/sabot)
    64

    View Slide

  65. Eclipse MicroProfile 1.1 (Aug, 2017)

    org.eclipse.microprofile.bom
    microprofile-bom-spec
    provided
    1.1.0
    pom

    compile group: 'org.eclipse.microprofile.bom', name:
    'microprofile-bom-spec', version: '1.1.0', ext: 'pom' 65

    View Slide

  66. 66

    View Slide

  67. Eclipse MicroProfile 1.2 (Sep, 2017)
    MicroProfile 1.2
    = Updated
    = No change from last release
    JAX-RS 2.0
    JSON-P 1.0
    CDI 1.2
    Config 1.1
    Fault
    Tolerance 1.0
    JWT
    Propagation
    1.0
    Health
    Check 1.0
    Metrics 1.0
    = New
    67

    View Slide

  68. Конфигурация 1.1
    ● API/SPI Изменения
    a. ConfigSource SPI был расширен с помощью метода по умолчанию, который возвращает имена свойств
    для данного ConfigSource
    ● Функциональные изменения
    a. Реализации теперь должны включать конвертер URL-адресов @Priority (1)
    b. Формат имени свойства по умолчанию для точки injection с использованием @ConfigProperty был
    изменен первой буквы класса. Реализации могут поддерживать это поведение. Вместо этого в
    MicroProfile Config 1.1 требуется использовать имя класса.
    c. Реализации теперь должны поддерживать примитивные типы, в дополнение к уже указанным
    примитивным типам враперов
    ● Изменения спецификации
    a. Уточнения по значениям параметров
    68

    View Slide

  69. Health Check 1.0
    ● Необходима совместимость с контейнерами
    (i.e. http://kubernetes.io/docs/user-guide/liveness/)
    69

    View Slide

  70. Health Check 1.0
    ● Необходима совместимость с контейнерами
    (i.e. http://kubernetes.io/docs/user-guide/liveness/)
    ● хорошо бы чтобы machine-to-machine communication
    как-то работало
    70

    View Slide

  71. Health Check 1.0
    ● Необходима совместимость с контейнерами
    (i.e. http://kubernetes.io/docs/user-guide/liveness/)
    ● хорошо бы чтобы machine-to-machine communication
    как-то работало
    ● … но чтобы и человек мог понять
    71

    View Slide

  72. Метрики
    Нужно хорошо и правильно мониторить сервисы,
    и это нужно делать из коробочки
    Metric Registry
    Required Base метрики
    Application метрики
    Vendor-specific метрики
    72

    View Slide

  73. Fault Tolerance
    Все ломается! Особенно микросервисы!
    73

    View Slide

  74. Fault Tolerance
    Все ломается! Особенно микросервисы!
    С этим надо жить! И хендлить их грациозно!
    74

    View Slide

  75. Fault Tolerance 1.0
    В основном повлияли:
    ● Hystrix
    ● Failsafe
    Цели:
    ● Отделить ответственность от логики (Runnables/Callables/etc) через retry policies, bulkheads,
    circuit breakers
    75

    View Slide

  76. Fault Tolerance 1.0 - что делает
    ● Timeout: Ну собственно все ясно
    76

    View Slide

  77. Fault Tolerance 1.0 - что делает
    ● Timeout: Ну собственно все ясно
    ● RetryPolicy: Определить критерии сколько еще пробовать
    77

    View Slide

  78. Fault Tolerance 1.0 - что делает
    ● Timeout: Ну собственно все ясно
    ● RetryPolicy: Определить критерии сколько еще пробовать
    ● Fallback: если чтото пойдет не так, как действовать дальше!
    78

    View Slide

  79. Fault Tolerance 1.0 - что делает
    ● Timeout: Ну собственно все ясно
    ● RetryPolicy: Определить критерии сколько еще пробовать
    ● Fallback: если чтото пойдет не так, как действовать дальше!
    ● CircuitBreaker: это сложно - предлагает способы предотвращать перегрузку системы или
    ненужные таймауты
    79

    View Slide

  80. Fault Tolerance 1.0 - что делает
    ● Timeout: Ну собственно все ясно
    ● RetryPolicy: Определить критерии сколько еще пробовать
    ● Fallback: если чтото пойдет не так, как действовать дальше!
    ● CircuitBreaker: это сложно - предлагает способы предотвращать перегрузку системы или
    ненужные таймауты
    ● Bulkhead: способ изоляции частей системы, в случае сбоев которых, остальные остаются
    работоспособными.
    80

    View Slide

  81. Circuit Breaker
    81

    View Slide

  82. Circuit Breaker
    82
    https://martinfowler.com/bliki/CircuitBreaker.html

    View Slide

  83. JWT
    Требования безопасности, связанные с архитектурой микросервиса, тесно
    связаны с безопасностью RESTful сервисов. В стиле архитектуры RESTful
    службы обычно не имеют состояния и любое состояние безопасности,
    связанное с клиентом, отправляется в целевую службу по каждому запросу,
    чтобы позволить службам повторно создавать контекст безопасности для
    вызывающего и выполнять проверку подлинности и авторизации
    83

    View Slide

  84. JWT
    Повлияли в основном:
    ● OAuth2
    ● OpenID Connect(OIDC), and
    ● JSON Web Tokens(JWT)
    Цель:
    ● Одна из основных стратегий распространения состояния безопасности от клиентов к услугам
    или даже от служб к услугам связана с использованием токенов безопасности.
    ● Для микросервисов на основе RESTful маркеры безопасности предлагают очень легкий и
    совместимый способ распространения идентификаторов между различными службами.
    84

    View Slide

  85. JWT
    Инфраструктура:
    Аннотации:
    ● @Clame (String or ClaimValue)
    ● @RolesAllowed
    ● @LoginConfig
    ● @DeclareRoles
    85

    View Slide

  86. JWT
    Инфраструктура:
    Классы:
    ● @Inject JsonWebToken jwt;
    ● @Inject Principal principal;
    ● @Inject JsonNumber jsonNumber;

    ● Various JWT tools
    86

    View Slide

  87. Eclipse MicroProfile 1.2 (Sep, 2017)

    org.eclipse.microprofile
    microprofile
    provided
    1.2
    pom

    compile group: 'org.eclipse.microprofile', name: 'microprofile',
    version: '1.2', ext: 'pom' 87

    View Slide

  88. Демо 5
    88

    View Slide

  89. 89

    View Slide

  90. Eclipse MicroProfile 1.3 (Q1 CY2018)
    MicroProfile 1.3
    JAX-RS 2.0
    JSON-P 1.0
    CDI 1.2 Config 1.2
    Fault
    Tolerance 1.0
    JWT
    Propagation
    1.0
    Health
    Check 1.0
    Metrics 1.1
    Open
    Tracing 1.0
    Open API
    1.0
    = Updated
    = No change from last release
    = New
    Rest Client
    1.0
    90

    View Slide

  91. Метрики 1.1
    Что нового:
    ● Улучшенное TCK.
    ● org.eclipse.microprofile.metrics.MetricRegistry.register(String name, Metric, Metadata)
    депрекейтнуто.
    ● Use org.eclipse.microprofile.metrics.MetricRegistry.register(Metadata, Metric) instead,
    where Metadata already has a field for the name.
    ● Глобальные таги теперь доступны через MicroProfile Config (env переменная все
    еще валидна).
    ● Аннотации и метаданные теперь могут иметь флаг для многократного
    использования. Имя метрики может быть зарегистрировано более одного раза.
    Значение по умолчанию равно falsе.
    91

    View Slide

  92. Configuration 1.2
    Новые фичи:
    ● SPI ConfigBuilder был расширен с помощью метода, который позволяет зарегистрировать конвертер с указанным типом класса. Это
    изменение устраняет ограничение, при котором не возможно добавить лямбда-конвертоты.
    ● Реализации должны теперь поддерживать преобразователь массива. Для преобразователя массива программный луукап свойства
    (например, config.getValue (myProp, String []. Class)) должен поддерживать возвращаемый тип массива. Для поиска injection
    необходимо также поддерживать массив, список или набор (например, @Inject @ConfigProperty (name = "myProp") список
    propValue;).
    ● Реализации также должны поддерживать преобразователи общего плана, если для данного класса нет соответствующих типов
    преобразователей. Реализация должна использовать конструктор класса с одним строковым параметром, а затем попробовать
    valueOf (String), за которым следует CharSequence.
    ● Имплементации должны поддерживать Class конверторы
    92

    View Slide

  93. OpenAPI
    Управление микросервисами в MSA может стать громоздким по мере
    увеличения количества микросервисов. Управление микросервисами
    осуществляется через их API. Управление, безопасность, балансировка
    нагрузки и дросселирование - это политики, которые могут применяться к
    API-интерфейсам с микросервисами. OpenAPI предоставляет Java-
    интерфейсы и модели программирования, которые позволяют разработчикам
    Java изначально создавать документы OpenAPI v3 из своих приложений
    JAX-RS.
    93

    View Slide

  94. OpenAPI 1.0
    ● Enterprise Java Binding of the OpenAPI v3 specification
    ● Основан на Swagger Core
    ● OpenAPI
    ○ Определяет стандартны, программное language-agnostic описание языка для REST APIs
    ○ Понимание и машин и человека
    94

    View Slide

  95. OpenTracing
    ● Назначает каждому внешнему запросу уникальный идентификатор
    внешнего запроса
    ● Пропускает идентификатор внешнего запроса ко всем службам,
    связанным с обработкой запроса
    ● Включает внешний идентификатор запроса во всех сообщениях журнала
    ● Записывает информацию (например, время начала, время окончания) о
    запросах и операциях, выполняемых при обработке внешнего запроса в
    централизованной службе
    95

    View Slide

  96. RestClient
    ● Мы не только предлагаем сервисы,
    96

    View Slide

  97. RestClient
    ● Мы не только предлагаем сервисы,
    ● но и потребляем их!
    97

    View Slide

  98. RestClient
    ● Мы не только предлагаем сервисы,
    ● но и потребляем их!
    ● Часто пишем одно и то же!
    98

    View Slide

  99. RestClient
    ● Мы не только предлагаем сервисы,
    ● но и потребляем их!
    ● Часто пишем одно и то же!
    ● ...и мапим ручками эксепшаны на http респонсы
    99

    View Slide

  100. Eclipse MicroProfile 1.3 (Q1 CY2018)

    org.eclipse.microprofile
    microprofile
    1.3
    provided
    pom

    compile group: 'org.eclipse.microprofile', name: 'microprofile',
    version: '1.3', ext: 'pom' 100

    View Slide

  101. Демо 6
    101

    View Slide

  102. Eclipse MicroProfile 1.4 (Q2 CY2018)
    MicroProfile 1.4
    JAX-RS 2.0
    JSON-P 1.0
    CDI 1.2 Config 1.2
    Fault
    Tolerance 1.0
    JWT
    Propagation
    1.0
    Health
    Check 1.0
    Metrics 1.1
    Open
    Tracing 1.0
    Open API
    1.0
    = Updated
    = No change from last release
    = New
    Rest Client
    1.0
    ● Improve developer documentation
    of existing specifications
    ● Incremental specification updates
    102

    View Slide

  103. Eclipse MicroProfile 2.0 (2H 2018)
    MicroProfile 2.0
    = Updates
    = No change from last release
    JAX-RS 2.1
    JSON-P 1.1
    CDI 2.0 Config 1.2
    Fault
    Tolerance 1.0
    JWT
    Propagation
    1.0
    Health
    Check 1.0
    Metrics 1.1
    Open
    Tracing 1.0
    Open API
    1.0
    JSON-B 1.0
    Rest Client
    1.0
    103

    View Slide

  104. Eclipse MicroProfile 2.1 (2H 2018)
    MicroProfile 2.1
    = Updates
    = No change from last release
    JAX-RS 2.1
    JSON-P 1.1
    CDI 2.0 Config 1.2
    Fault
    Tolerance 1.0
    JWT
    Propagation
    1.0
    Health
    Check 1.0
    Metrics 1.1
    Open
    Tracing 1.0
    Open API
    1.0
    JSON-B 1.0
    Rest Client
    1.0
    104
    ● Improve developer documentation
    of existing specifications
    ● Incremental specification updates

    View Slide

  105. Eclipse MicroProfile 2.1 (2018)

    org.eclipse.microprofile
    microprofile
    2.1
    provided
    pom

    compile group: 'org.eclipse.microprofile', name: 'microprofile',
    version: ‘2.1', ext: 'pom' 105

    View Slide

  106. Eclipse MicroProfile 2.2
    MicroProfile 2.2
    = Updates
    = No change from last release
    JAX-RS 2.1
    JSON-P 1.1
    CDI 2.0 Config 1.2
    Fault
    Tolerance
    2.0
    JWT
    Propagation
    1.0
    Health
    Check 1.0
    Metrics 1.1
    JSON-B 1.0
    106
    OpenTracing
    1.3
    OpenAPI
    1.1
    RestClient
    1.2.0

    View Slide

  107. Eclipse MicroProfile 2.2 (2019)

    org.eclipse.microprofile
    microprofile
    2.2
    provided
    pom

    compile group: 'org.eclipse.microprofile', name: 'microprofile',
    version: '2.2', ext: 'pom' 107

    View Slide

  108. Eclipse MicroProfile 3.1 – вот буквально на той неделе
    108

    View Slide

  109. Из не вошедшего:
    109
    Concurrency
    Long Running
    Actions
    Graph QL
    Reactive
    Messaging
    Reactive DB
    Access
    Event Data

    View Slide

  110. Ну, по идее можно и ISTIO
    прикрутить...
    110

    View Slide

  111. 111
    MicroService
    Service Mesh
    Fault Tolerance
    Security
    Health
    Metrics

    View Slide

  112. 112
    ISTIO/LINKERD
    Service Mesh
    MicroService

    View Slide

  113. https://github.com/eclipse/microprofile-service-mesh
    113
    Service Mesh

    View Slide

  114. Как там с тестированием?
    114

    View Slide

  115. Тестирование
    115

    View Slide

  116. Многие считают Arquillian тяжелым и
    трудным в настройке
    116

    View Slide

  117. Тестирование
    117

    View Slide

  118. https://antoniogoncalves.org/2018/01/16/
    java-ee-vs-spring-testing/
    118

    View Slide

  119. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    119

    View Slide

  120. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    ● Оно opensource
    120

    View Slide

  121. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    ● Оно opensource
    ● Оно сапортится крутыми вендорами и комюнити
    121

    View Slide

  122. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    ● Оно opensource
    ● Оно сапортится крутыми вендорами и комюнити
    ● Всего один POM
    122

    View Slide

  123. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    ● Оно opensource
    ● Оно сапортится крутыми вендорами и комюнити
    ● Всего один POM
    ● Автоматическая конфигурация
    123

    View Slide

  124. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    ● Оно opensource
    ● Оно сапортится крутыми вендорами и комюнити
    ● Всего один POM
    ● Автоматическая конфигурация
    ● Полезные плюшки metrics, health checks и externalized configuration
    124

    View Slide

  125. Ну так вот
    Почему стоит задуматься применить Microprofile
    ● Оно стандартное
    ● Оно opensource
    ● Оно сапортится крутыми вендорами и комюнити
    ● Всего один POM
    ● Автоматическая конфигурация
    ● Полезные плюшки metrics, health checks и externalized configuration
    ● Вообще нет кодогенерации и не нужна XML конфигурация
    125

    View Slide

  126. Спринг буут <- Вспомним это слайд
    Крутое, потому что:
    ● Stand-alone
    ● Embed Tomcat или Jetty (не нужно деплоить WAR)
    ● Предоставляет 'starter' POMs, чтобы не путаться
    ● Автоматическая конфигурация Spring
    ● Полезные плюшки metrics, health checks и externalized configuration
    ● Вообще нет кодогенерации и не нужна XML конфигурация
    126

    View Slide

  127. Если не разницы, зачем платить больше!
    127

    View Slide

  128. Именно платить:
    Для разработчика оно может быть и бесплатное..
    128

    View Slide

  129. Именно платить:
    Для разработчика оно может быть и бесплатное..
    Но для конторы оно может быть очень даже платное
    129

    View Slide

  130. Именно платить:
    Для разработчика оно может быть и бесплатное..
    Но для конторы оно может быть очень даже платное
    ● А как там с лицензиями?
    130

    View Slide

  131. Именно платить:
    Для разработчика оно может быть и бесплатное..
    Но для конторы оно может быть очень даже платное
    ● А как там с лицензиями?
    ● А как там с саппортом?
    131

    View Slide

  132. Именно платить:
    Для разработчика оно может быть и бесплатное..
    Но для конторы оно может быть очень даже платное
    ● А как там с лицензиями?
    ● А как там с саппортом?
    ● А как там допусками и сертификацией?
    132

    View Slide

  133. Именно платить:
    Для разработчика оно может быть и бесплатное..
    Но для конторы оно может быть очень даже платное
    ● А как там с лицензиями?
    ● А как там с саппортом?
    ● А как там допусками и сертификацией?
    ● … А как там с законодательством?
    133

    View Slide

  134. А может плюсов больше?
    Почему стоит задуматься применить Microprofile
    ● Практически переписывается заново
    134

    View Slide

  135. А может плюсов больше?
    Почему стоит задуматься применить Microprofile
    ● Практически переписывается заново
    ● Опенсорс
    135

    View Slide

  136. А может плюсов больше?
    Почему стоит задуматься применить Microprofile
    ● Практически переписывается заново
    ● Опенсорс
    ● Выбрасывается наследие ЕЕ
    (например все делается с CDI)
    136

    View Slide

  137. А может плюсов больше?
    Почему стоит задуматься применить Microprofile
    ● Практически переписывается заново
    ● Опенсорс
    ● Выбрасывается наследие ЕЕ
    (например все делается с CDI)
    ● Oracle не отстает (точнее немного отстает): Helidon
    137

    View Slide

  138. Helidon:
    MicroFramework:
    WebServer.create(
    Routing.builder()
    .get("/greet", (req, res)
    -> res.send("Hello World!"))
    .build())
    .start();
    138
    MicroProfile:
    public class GreetService {
    @GET
    @Path("/greet")
    public String getMsg() {
    return "Hello World!";
    }
    }

    View Slide

  139. Повод задуматься:
    139

    View Slide

  140. Ну так вот, ЕЕ уже не тяжел!
    140

    View Slide

  141. А еще появился starter
    141

    View Slide

  142. 142

    View Slide

  143. Оно еще и легкое
    143

    View Slide

  144. … а еще все очень быстро меняется!
    144

    View Slide

  145. 145

    View Slide

  146. 146

    View Slide

  147. 147

    View Slide

  148. И с тестами там все правильно!
    148

    View Slide

  149. Спасибо!!!
    149
    149

    View Slide