All posts tagged: microservices

SynTouch op J-Fall

Dit jaar was de 9de editie van J-FALL in Ede, de grootste Java conferentie in Nederland.
Met 1800+ deelnemers, 64 (internationale) sprekers, 50+ stands en 50+ sessies!

Als ik het vergelijk met vorig jaar, lag dit jaar de focus meer op de nieuwe features en details van Java. We zien met de half jaarlijkse releases van de JDK, natuurlijk dat er veel functionaliteiten, in een snel tempo worden toegevoegd.

Veel nieuwe features

Tijdens J-FALL hebben ze veel nieuwe features toegelicht zoals Amber (Language features toevoegen), Loom (Virtual threads), Panama (Connectie tussen JVM en (non-Java) APIs) en Valhalla (Verrijken van objecten met value objects en user-defined primitives). Zelf ben ik erg enthousiast met de komst van het project Loom. Het introduceert virtual threads die niet verbonden zijn met OS threads om concurrency op te lossen. Meer hierover kan je hier vinden.

Dit event biedt ook een mooie kans om met verschillende bedrijven te sparren over hun applicatie architectuur en hun kijk op technologie en Java in de toekomst.

Natuurlijk heb ik ook wat leuke en interessante sessies bijgewoond, die ik graag wil toelichten. In de titel staat de spreker tussen haakjes:

Distributed tracing (Ana Maria Mihalceanu)

De komst van microservices heeft veel voordelen opgeleverd, echter brengt het ook extra complexiteit met zich mee. Een van deze zaken is bijvoorbeeld de tracing door je netwerk van services.

In afbeelding 1 is te zien welke tools en fameworks er gebruikt zijn op het gebied van tracing. Het is begonnen bij X-Trace waarna Zipkin kwam. Het populaire Spring framework maakt gebruik van dit framework. OpenTelemetry combineert het beste van OpenTracing en OpenCensus.

Sampling met behulp van OpenTelemetry

Grote softwaresystemen verwerken veel requests die idealiter worden getraceerd. Echter als je al deze tracing gaat verwerken en behandelen dan is het te veel. Een techniek die gebruikt kan worden is om deze requests te samplen om zo een algemeen beeld te krijgen van de requests.

Er werden 3 verschillende vormen van sampling beschreven:

  1. Bij latency sampling sample je requests die voorbij een bepaalde latency zijn.
  2. Status sampling is gebaseerd op status codes van je requests, denk bijvoorbeeld aan 404 of ERROR.
  3. Daarnaast is het mogelijk om te samplen op combinaties van policies.

Demo

In de demo werd een quarkus applicatie getoond die requests verwerkt en deze vervolgens doorstuurt naar de Jaeger server. Ook werden er verschillende implementaties getoond van de verschillende tracing policies binnen een microservice architectuur.

Link naar de code vind je hier.

Migratie van kritische systemen binnen de NS (Arjen Jansen, Marije de Heus)

Treinen zijn kritisch voor onze mobiliteit en infrastructuur. De NS beheert grote systemen die ons helpen om van A naar B te komen. Denk hierbij aan de software voor treinborden, in de trein en allerlei andere processen.

In deze sessie kregen we inzicht in hoe de NS een kritisch systeem aan het migreren is naar een nieuw IT-landschap.

In afbeelding 4 is te zien dat de applicatie gebruik maakt van de Oracle stack en de Enterprise Service Bus. Voor de NS is deze architectuur niet meer werkbaar. Ze kunnen hun deployments niet zelf doen, changes implementeren duurt uren, veel JMS endpoints, 23 EARs om te beheren, 13 database schema’s en 1 repository met 210 modules.

Volgens het team zorgt deze stack voor veel problemen waardoor doorontwikkeling niet soepel verloopt. Daarom hebben ze gekozen om over te stappen naar een microservice architectuur met PostgreSQL, Openshift, Kubernetes, Springboot, RedHat AMQ en meer.

Wat ik mooi vind is dat dit een klassiek geval is van een migratie. Men wil van een grote monoliet, gemaakt met behulp van Oracle, over naar een microservice architectuur met behulp van OpenSource frameworks.

Migratie strategieën

In de sessie zijn meerdere strategieën besproken. Om maar met iets simpels te beginnen, de big bang. Hopelijk hoef ik niemand te overtuigen dat dit geen goede oplossing is, en zeker niet voor kritische systemen. Bij de uitrol van het nieuwe systeem wil ik ook nog graag de trein kunnen nemen.

Er zijn twee opties besproken die ik wel interessant vond en waar ik dieper op in wil gaan:

Uitfaseren

De eerste optie die besproken is, is het uitfaseren van delen, en dit lijkt op het Strangler Pattern. Hierbij zouden delen van het nieuwe BAM-systeem geleidelijk worden toegevoegd en het oude systeem worden vervangen.

Echter zou dit met integriteit van data lastig worden. Dan zou het BAM geleidelijk de data persistence moeten overzetten naar de nieuwe BAM en dan zit de integriteit in beide systemen. En zoals we weten is dit heel verwarrend en kan dit voor onstabiele situaties zorgen. Daarnaast wil het team de oude code niet of nauwelijks nog aanpassen wegens de hoge complexiteit.

Shadowing

Het team heeft uiteindelijk gekozen om een nieuwe BAM naast de oude te ontwikkelen.
Ze gaan het nieuwe systeem ontwikkelen en vervolgens de data van het oude systeem ‘kopiëren’ naar het nieuwe systeem. De data die wordt uitgestuurd vanuit de oude BAM en de nieuwe BAM worden vervolgens gecontroleerd door middel van hun custom validator. Hiermee garanderen ze dat de output in ieder geval gelijk blijft.

Waar ik zelf benieuwd naar ben is hoe ze garanderen dat de input op eenzelfde manier ontvangen wordt. Dus de interfaces van de systemen zouden gelijk moeten zijn. Hierop is niet verder ingegaan.

De oplossing vind ik wel heel logisch, aangezien dit systeem zeer belangrijk is voor de NS. Men wil zeker zijn dat het nieuwe systeem op z’n minst zo goed is als het oude systeem, gegeven de input en de output.

In mijn optiek is het een ingewikkeld traject, omdat ze complexiteit weg willen halen zonder functionaliteit te veranderen. Dus ze gaan hun database en code versimpelen. Daarbij is het noodzakelijk om goede tests te ontwikkelen die het bewijs leveren van de integriteit en stabiliteit van het nieuwe systeem.

Tot slot

J-Fall was weer heel interessant dit jaar. De grote bedrijven zoals AWS, Red Hat, de overheid en ING waren aanwezig. Ook waren er veel nieuwe stands die ik zelf niet had verwacht zoals Randstad, IKEA, Postcode Loterij etc. We zien dus dat veel bedrijven interesse hebben in Java en de ontwikkeling daarin. Zelf zie ik dat veel bedrijven overgaan op microservices gemaakt met een Java framework in Java of Kotlin. Er zijn grote ambities om systemen te vernieuwen en te verbeteren. Ik denk dat dit een goede insteek is en ben blij om het te zien. Door middel van vernieuwing gaat het makkelijker worden om systemen uit te breiden en te beheren.

De sprekers waren zoals elk jaar weer top. Het is fijn om live informatie te kunnen krijgen over de laatste ontwikkelingen en waar de markt tegenaan loopt en hoe men dit oplost. Dit heeft mij in ieder geval nieuwe inzichten gegeven en een beter beeld gegeven van het Java landschap.

SynTouch de “Open Source Way”

Ook binnen SynTouch hebben we een Open Source practice, die bedrijven helpt om oplossingen te bieden met behulp van open source producten zoals bijvoorbeeld ook via Java frameworks.

Mocht je hier meer over willen weten, neem dan contact met ons op.

Qun WangSynTouch op J-Fall
lees meer

AWS re:Invent 2018 – new launches

The Event

In the first part of my blog I commented on Las Vegas itself and my experiences travelling to Las Vegas; in this part I will describe my experience with the actual reason for travelling to Las Vegas, viz. attending the AWS re:Invent 2018 event.

As you may already know, re:Invent is the yearly conference from Amazon Web Services (AWS), this time its seventh edition, held in Las Vegas, for customers, partners and vendors from the AWS ecosystem. The size of re:Invent is astonishing, during this conference (starting on Monday and ending around noon on Friday), it welcomes 53,000 participans, spread across 7 different venues for a total of over 2,200 sessions of content.

Milco NumanAWS re:Invent 2018 – new launches
lees meer

Las Vegas, or Tinseltown in the Desert

Sin City

This weekend I have returned from visiting my first AWS re:Invent. This seventh edition was (as always) held in Las Vegas – aka Sin City as it caters for the many vices people may pursue. Needless to say I have been a good boy and only indulged into drinking a few beers …

Milco NumanLas Vegas, or Tinseltown in the Desert
lees meer

Viva Las Vegas!

Inleiding

Na meerdere keren Oracle Open World te hebben bezocht, ben ik sinds een aantal jaren steeds meer geïnteresseerd geraakt in de Cloud-technologie. Niet primair SaaS-oplossingen waarbij een software-pakket op een cloud-omgeving draait, maar vooral in PaaS-oplossingen waarbij ontwikkel-platformen en applicatiecomponenten beschikbaar worden ‘bevrijd’ uit het knellende en gedateerde korset van de bedrijfsdatacentra en worden afgenomen uit het cloud-nirvana. En waar kun je je dan beter in verdiepen dan in de oplossingen van de marktleider op het gebied van infrastructuur- (IaaS) en platformoplossen (PaaS) in de cloud, Amazon Web Services?

Milco NumanViva Las Vegas!
lees meer

The power of Oracle Event Driven Architecture

Key Takeaways

  • Event Driven Architecture helps with decoupling applications
  • Think about the names used for events
  • Let Publisher publish and filter within subscribers
  • Use meta data within event headers
  • Use standardization on entities within Event, so that the Event is a first citizen data object

Introduction

There is a lot of hype around Microservices and the use of events for implementing the choreography pattern. However this is nice for companies like Netflix and Twitter, but there are a lot of organisations still struggling with files and ESB like products. Also my current client uses an ESB namely the Oracle SOA Suite 12c for integrations. We cannot just throw away this ESB, but we can make use of the event mechanism built in. This blog describes the way we use the EDN (Event Delivery Network) component, that is used within SOA composites to throw events and to subscribe on events.

Roger van de KimmenadeThe power of Oracle Event Driven Architecture
lees meer

Microservices Conference 2018

On the 22 and 23rd of March I went to the ‘Microservices Conference 2018, MicroXchg’ in Berlin. This blog post is a short recap of my experience of this conference, this year held for the 4th time.

My goal was to learn more about the Microservices world, to fill my toolset of possible architecture solutions and of course to see Berlin a bit. Furthermore, I interviewed Chris Richardson about Microservices and his upcoming book on Patterns. This interview is added to this blog as well.

Roger van de KimmenadeMicroservices Conference 2018
lees meer

“Kunnen we hier een interface voor ontwikkelen?”

Een eenvoudige vraag die regelmatig gesteld wordt, zeker vanuit businesszijde. Toch is het antwoord hierop niet altijd even simpel. Zeker niet met het oog op kosten versus baten. Systemen, bedrijfsprocessen, toekomst en schaalbaarheid zijn namelijk van grote invloed op de complexiteit van de interface en dus op de kosten. In dit blog een aantal overwegingen die kunnen helpen om deze vraag toch verantwoord te kunnen beantwoorden.

Bart-Jan Keetels“Kunnen we hier een interface voor ontwikkelen?”
lees meer

First steps in Cloud-based JS development

Some time ago, while working on a proof of concept using an Oracle API product, I got exposed to server-side JavaScript programming. Or more accurately, programming Web APIs using the Node.js platform and the Express Framework (possibly I will elaborate on this experience later, after this product has been publicly released).

Milco NumanFirst steps in Cloud-based JS development
lees meer