In June I got the opportunity to attend the NDC Conference and Workshop in Oslo. The atmosphere over there was magical. You feel like you are totally into some another world, where every hour, you are getting an opportunity to be with like-minded people and to listen to these imminent speakers.
The program was for 5 days, where first two days were dedicated to workshop and remaining three days were for conference at NDC.
Workshop - Designing Microservices
I selected ‘Designing Microservices’ topic for my workshop during the first two days. This decision was taken because I wanted to improve my knowledge about microservices and know the pros and cons of implementing the systems using microservices. This could be interesting for 3bits since we talked about it during our conference to Malaga earlier this year.
Our speaker was Sam Newman, a technologist, speaker and author of ‘Building Microservices and monolith to Microservices’.
I really enjoyed attending his workshop and what I concluded is – Directly going from a tightly bound monolith system to microservices is not a good idea. People who tried this failed 90 % of the time. From monolith distributed system, one can think of bringing in microservices, but step by step. Pull out one section from the distributed system and implement as microservice. Then, run both for certain amount of time, until you get sure that both (session inbuilt in distributed system and microservice) are giving us the same return. Once you are sure, remove the pointer from the session within the distributed system and move it to the microservice. So, it should be a step-by-step approach.
There were many stalls where companies were marketing their products and services. In the break time or lunch time, one can visit their booths and listen to what they are doing.
I got a chance to talk to Particular guys of whom we are using NServiceBus and ServicePulse at 3bits. There was another tool that they were marketing named ServiceInsight, which is a desktop application that can be used for advance debugging of system’s messaging behavior.
I also went to DevExpress stall, who have customized .NET controls by making it more flexible and attractive than inbuilt .NET controls and also helps in making applications faster. One needs to embed their assemblies and can have a totally new UI experience.
I attended various sessions at the conference during the last three days. Many prominent speakers were there, and it was a pleasure to listen to them face to face. I would like to highlight a few sessions here.
One session ‘Computer Science and my Day Job’ by Rob Conery, that I attended was done by an experienced Microsoft developer, where he asked developers to look into the theoretical concepts very deeply when implementing something, specially the queries that we write to fetch data. He emphasis that we should look into the time complexity O(N) or O(N2) or O(log N) or O(1) (the best) and so on before writing our queries, otherwise we can crash the system some or the other time.
There was another very interesting session that I attended whose title was really peppy called ‘Architecture, The Stuff that’s Hard to Change’ by Dylan Beattie. He opened his session with a song which I think is so well written. Kudos! The summary of this session was that we should really look deep into while doing architectural design as it is very important to reduce the rewriting that we are doing now a days.
I also attended a very interesting session ‘Blazor, a new framework for browser-based .NET apps’ by Steve Sanderson, a Microsoft developer on the ASP.NET team. He showed us a demo on how we can use Blazor to create web applications. Blazor is a framework for browser-based (client-side) applications written in .NET and running under WebAssembly. It gives you a benefit of single-page application (SPA) platform where you can share .NET code across server and client.
There was another very interesting session I attended namely ‘Practical Chaos Engineering’ by Adrian Hornsby, who is a Senior Technical Evangelist @Amazon Web Services. He explained the reasons of self-breaking the system (with a purpose) in a controlled environment and through well-planned experiments to build confidence in your application to withstand turbulent conditions. This way we can find our system weaknesses and fix them before they break when least expected. One can start by injecting small failure injections eg. Application level, Host failure, resource attacks (CPU, memory), Network attacks (dependencies, latency, etc), Region attack, or People attack.
Last but not the least, we got a chance to listen to David Neal who was there to give an inspirational speech. And the lessons learnt are – look beyond flaws, freedom to fail, keep trying, don’t make others feel bad and learn the skill to admire others.