A couple of weeks ago, I had a great opportunity to visit NDC Oslo 2017. NDC stands for Norwegian Developers Conference and is one of Europe`s largest conferences for .NET & Agile development. The first conference was held in Oslo in 2008 and today NDC Conferences are 5-day events with 2 days of pre-conference workshops and 3 days of conference sessions and are being held in Oslo, London, Sydney, and Copenhagen. What makes the NDC different is the quality and the quantity of the speakers and the topics it offers. Having this in mind I must say it is always a challenge to select the right sessions or to choose one session over several popular ones.
Looking at the agenda this year, I decided that my focus will be getting updated on .NET Core 2.0 from technology aspect and getting deeper and broader understanding of the microservices and serverless architecture from architectural aspect. In this blog post I will focus on the architectural talks that I think are worth sharing along with my personal thoughts. I found these topics very interesting because currently I am working on cloud solutions based on microservices and serverless architecture and I always want to compare my work with the latest trends.
I will start with Sam Newman and his talk "Confusion In The Land Of The Serverless." One of his points is that whenever we introduce FaaS (Functions as a Service) in our solution suddenly we have a big computing power. This means that certain pieces of our solution that were performing average now can perform very well and there is nothing wrong with this if the whole architecture is adjusted to the change. If that is not the case, we can introduce new bottlenecks that were not anticipated at all. For example, I was working on a project where the processing part of our solution was replaced with Azure Functions. At that point we could process a huge number of requests, however we could not store all the processed work because we have introduced a new bottleneck and that is the storage part. Afterwards we had to replace the existing storage (Blog Storage) with more efficient storage (Redis Cache.) just to make the whole architecture aligned to the new changes.
Here comes the question: How do we decide which technology to apply to solve certain bottlenecks? This question was very well elaborated by James Lewis in his talk: "Betting on Performance: A note on Hypothesis-driven Performance Testing." His main idea is that whenever we detect a problem, we propose a hypothesis based on our knowledge and experience, we implement a prototype, and we test the hypothesis. In general, this is nothing new, but with the latest cloud platforms is very easy to implement. For example, if we look at the example above with the storage bottleneck, it was very easy for us to test the new storage solution and to compare the performance results. The easiness of the testing comes from the fact that we can create a new Redis Cache component in Azure, we can deploy modified version of the Azure Functions to use the new storage part, and we can observe the results in Application Insights with just few clicks. In general, we can test the performance improvement hypothesis in less than an hour and we can have a go-no-go decision.
Another interesting talk that I would like to share is from my favorite Pluralsight author Scott Allen entitled "Building Resilient Applications In Microsoft Azure." Scott presented latest tools from Azure to make more resilient cloud solutions. For instance, there is already integrated retry policy in each SDK which offers more specific features than a generic retry library. I find it very useful that in Azure Storage retry policy there is a location mode to specify that retry attempts will access the secondary read-only copy if we are using geo-redundant storage. Scott has also spent some time on Service Fabric as the most appropriate approach for more resilient solutions and he has promised a new course for Service Fabric, which is already on Pluralsight.
I as a mentioned above, it is very difficult to decide which talks to visit and there are many interesting sessions that I didn't listen. However, being there allowed me to talk to some of the speakers and guests during the breaks and that helped me get answers to my questions and updates on certain topics. In a nutshell visiting NDC was a great experience, I got back with fresh ideas and motivation for making better products. Looking forward for NDC Oslo 2018.