Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open...
Transcript of Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open...
![Page 1: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/1.jpg)
Lean microserviceson OSGi
By Christian SchneiderOpen Source Architect at Talend
[email protected]@schneider_chris
![Page 2: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/2.jpg)
Participate in Demo
Connect to irc network freenode
Channel #jbcnconf
![Page 3: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/3.jpg)
Microservices...way of designing software applications as suites of independently deployable services.... organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data. - Martin Fowler
● Create application out of independently deployable services● Verticals around business capabilities● Decentralized data● Automated deployment● 1 service per process● Lightweight communications between services (typically REST)
![Page 4: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/4.jpg)
Spring boot● Framework for micro service development based on spring● Easy to start. Paste snippets of “starter” dependencies into pom● Convention over configuration● Good docker and cloud support
![Page 5: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/5.jpg)
The Dark side of microservices
![Page 6: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/6.jpg)
No, no, no. Quicker, easier, more seductive...
Are microservices stronger than OSGi?
![Page 7: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/7.jpg)
Dependencies between microservices
![Page 8: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/8.jpg)
OperationsContainer vessel - Application Server
![Page 9: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/9.jpg)
Microservices operation - Theory
![Page 10: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/10.jpg)
Microservices operation - Practice
![Page 11: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/11.jpg)
Microservices can not cure bad design
![Page 12: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/12.jpg)
Microservices with spring-boot…What is wrong with it?
● Lots of dependencies already at design time
● Microservices always must communicate remotely
● Proprietary Annotations / API● No flexibility in packaging
1 Microservice = 1 Deployment Unit = 1 Process
![Page 13: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/13.jpg)
A small spring boot project
● Pollutes the classpath● Difficult to establish rules which APIs to use
90dependencies
20 MBjar file
![Page 14: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/14.jpg)
Why is OSGi different?
● Coding against APIs and specs
● Self describing modules (bundles)
● OSGi services to communicate between bundles
● Semantic versioning
● Remote Service Admin for Remote calls and REST
● Flexible packaging
![Page 15: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/15.jpg)
Semantic Versioning
● MAJOR version - incompatible API changes,● MINOR version - added functionality in a backwards-compatible manner● BUGFIX version - backwards-compatible bug fixes
Mind the difference between API and SPI.
![Page 16: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/16.jpg)
Remote Service Admin
● Exports and imports OSGi services● Service Properties to mark for export and configure transports, …● Highly customizable (Policies, Transports, Serialization, Discovery)
![Page 17: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/17.jpg)
Rest services with RSA
● Just JAX-RS annotations on interface
REST Endpoint User bundleHTTP
OSGi service
CXF Transport for Aries RSA
Creates
TopologyManager
Detects
Selectstransport
![Page 18: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/18.jpg)
Lets see it in practice
Small chat application
● Modules talk to each other using an OSGi ChatListener interface described in API bundle
● IRC connector using camel● Shell integration using gogo● Tinkerforge Display and Motion
detector● Optional Remoting using Aries
RSA
![Page 19: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/19.jpg)
Chat APIChat shell integrationTinkerforge LCD displayIRC Connector
IRC
All in one
● 1 Process● 6MB runnable jar● No remote calls inside application● Still modular as bundles only coupled
through API and OSGi service
![Page 20: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/20.jpg)
Container vessel - OSGi deployment in one process
![Page 21: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/21.jpg)
Chat APIIRC ConnectorAries RSA
IRC
Microservice Deployment
Chat APITinkerforge LCD and motion detectAries RSA
Chat APIChat shell integrationAries RSA
Zookeeper
![Page 22: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/22.jpg)
Microservice Deployment
● Same bundles as before● As many deployment units as needed● Each deployment unit can scale● Runnable jars or docker containers● Cloud native if needed● Aries RSA overhead 300 KB + 800 KB zookeeper lib● Remote calls or local calls as needed● Many options for remotings (tcp, fastbin, SOAP, REST, JMS)
![Page 23: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/23.jpg)
But beware of the same management issues as any other micro services
![Page 24: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/24.jpg)
OSGi can scale from very small to very large
But no simple cure for the operational problems of microservices
![Page 25: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/25.jpg)
Unsure if you actually need a microservice architecture?● Develop your application using modular bundles● Stay on single process as long as possible● Decide about the packaging and deployment as late as
possible● Deploy only as fine granular as needed
![Page 26: Lean microservices on OSGi · 2017-12-14 · Lean microservices on OSGi By Christian Schneider Open Source Architect at Talend chris@die-schneider.net @schneider_chris](https://reader033.fdocuments.in/reader033/viewer/2022042222/5ec828d5a78fc4566343be84/html5/thumbnails/26.jpg)
Further Reading
● Achim Nierbeck - Microservices on OSGi● Milen Dyankow - Microservices and
Modularity● OSGi Chat example code● Example for REST export using Aries RSA
and CXF