8/9/18

This week's Wednesday Evening Training: Microservices architecture and implementation in Java

A bit of architecture and a lot of code this week's Wednesday Evening Training. Together with Bart van Beek, one of our expert Java software engineers, I gave explanation on the architecture, design and engineering of a Microservices architecture.


So what is this "Microservices" architecture?

Let me give you a very, very, very short introduction. See the links in the bottom of this article for further reading & coding.

Since the creation of the first applications, we've continously been attempting to divide an application in manageable parts, so that we could design, develop, deploy and manage applications more effectively and efficiently. This is crucial because solutions nowadays more resembles a continuously changing eco system, rather than a stable and easily manageable one-piece software. Web services have made it possible to connect full applications over the internet in a standardized way, Microservices take this a step further. Microservices are deployed as a light weight, but fully functional applications with very limited functionality. Connected, they form fully functional capabilities (ready to use functionality and data) of which the parts can be changed, deploy and managed independently of each other. This enables continuously changing and deploying sofware parts by independend teams, in different technologies (e.g. Java, .NET) and scaling more easily by deploying the parts on different locations. Using virtual infrastructure and containers (e.g. Docker) you will be able to scale in and out very fast so that you can tune your software infrastructure neatly to what you need at a particular moment.

This drastic increase in flexibility comes with it's price: you will need to put more effort in implementing functionality like communication, coordination, orchestration, monitoring and exception handling that is normally handled in application and integration platforms. Also, engineers need also to be proficient with infrastructure and business processes, instead of just one programming language and related tools.

Therefore, it is increasingly important to follow patterns (standardized solutions). Luckily, there are a lot of patterns available. See the links in the bottom of this article for some of the resources on patterns.


Back to this evening's training...

After my introduction on Microservices architectures and related patterns, Bart gave us a demo and code walkthrough of a Java based Microservices implementation. We could experiment with the example implementation he provided and learned a lot of this. On the internet, we also found a reference implementation of a (Microsoft) Azure reference implementation. In a follow up we'll do a walkthrough of this implementaion as well, and also create a prototype solution in which we'll implement a Microservices solution using both Java and Microsoft technologies. To be continued...

One of the nice things of the Wednesday Evening Training is that we can decide on the spot which technology to discuss. So an evening that is originally focussed on a particular technology can suddenly be enriched with a completely different topic. One of our colleagues, Quincy Jacobs, had dived into OpenGL. OpenGL is closely related to BabylonJS which can be used combined with Unity3D, on which we already had some workshops. On the spot, we decided to plan an wednesday evening combining these topics, combining explanation on the underlying (3d) concepts and experimenting combining the technologies. Also to be continued...


Further reading

Do you want to read more on the topics in this post? Here are some links...

Introductions:
Microservices: https://en.wikipedia.org/wiki/Microservices
Service Oriented architecture: https://en.wikipedia.org/wiki/Service-oriented_architecture
Microservices vs SOA: https://www.bmc.com/blogs/microservices-vs-soa-whats-difference/
Microservices, a definition of this new architectural term: https://martinfowler.com/articles/microservices.html
Why a microservices approach to building applications? (giving an approach to designing and implementation) https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-overview-microservices
Designing, building, and operating microservices on Azure: https://docs.microsoft.com/en-us/azure/architecture/microservices/

Patterns:
Microservice patterns (explanation and patterns): http://www.microservicepatterns.org/
Cloud patterns (explanation and patterns): http://cloudpatterns.org/

Lots of info on patterns on Wikipedia as well...

Example code:
https://github.com/mspnp/microservices-reference-implementation

By the way: in https://github.com/mspnp (Microsoft patterns & practices on GitHub) you'll find lot's of interesting example code on patterns. Well worth visiting!

Past Wednesday Evening Trainings

You'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

Next Wednesday Evening Training

Next Wednesday Evening Training, we'll have a "klusavond" in which we'll work on our projects. In the photo below, you'll see Aish already busy preparing the hardware :).



#capgemini #werkenbijcapgemini #lifeatcapgemini #wednesdayeveningtraining #microservices #microsoft #java

No comments:

Post a Comment