In the last blog about MySURF, I wrote a bit about the basic architecture of MySURF, why we are carrying out this project and – most importantly – what it brings to our users. Now I will zoom in more closely on the MySURF architecture and discuss the development environment we use, the use of microservices and the role the cloud plays in this.
Open Source in .NET
The SURFmarket developers are developing MySURF entirely in .NET using an Open Source licence. There is a great deal of Microsoft and .NET knowledge within SURFmarket, and just like Java, .NET is a platform with broad applications that is also very suitable for developing front ends as well as back ends.
Java is used extensively within SURF’s target groups. From this angle, it might be more logical to use Java for MySURF. However, we have noticed that the demand for Azure (Microsoft’s cloud platform whose main platform is .NET) within the target groups is increasing significantly. For this reason, it is good for SURF to gain experience with and knowledge of the Azure platform, together with .NET. With the .NET open sources, Microsoft has taken an important strategic step that will only expand its user group. In addition, Microsoft has begun ‘porting’ from .NET to the Linux platform. This project is called .NET Core and was recently released.
Transitioning to the Azure Cloud
In order to allow your application to operate efficiently on a cloud platform, you have to take this into account in the design. This is what we call a cloud-native application. What this means is that, among other things, you must develop the application in such a way that it can make the best possible use of the advantages that the cloud platform has to offer. Examples include the option to automatically scale up when the load increases.
In transitioning to the cloud, you also have to bear in mind all sorts of other factors that raise many new questions. Perhaps you want a hybrid cloud solution, for instance. And what about the risks in the areas of governance, laws and legislation, compliance, information security and business continuity that are associated with this? How do you get your exit strategy in order? Do you want to learn more or take part in a cloud training session? SURFnet offers regular training sessions on this topic, so keep an eye on the SURF agenda. Also check out my earlier blog entitled ‘Over Noisy Neighbours en andere Cloud kracht termen’ (On Noisy Neighbours and other Cloud expletives).
One answer to the major challenges of developing and managing applications in the cloud is the use of a so-called microservice architecture. This is an architecture in which an application consists of multiple service which together form a whole. In short, the microservice architecture is a way to develop a single application in the context of a set of smaller services: each with its own process and datastore, linked via lightweight mechanisms such as HTTP. This makes it easy to build a scalable platform.
A microservice requires very limited management, thus allowing more freedom when it comes to technical implementation. A microservice is also tasked with saving data. This creates a highly flexible and dynamic architecture in which – instead of saving the data in one central database used by all applications, which consist of multiple services – data is kept close to the services. The comparison with the traditional approach is visualised in the image below:
MySURF will be built according to this microservice architecture. For this purpose, Microsoft Azure supplies Service Fabric: a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices.
Continuous Innovation, Development and Delivery
Another aspect of being able to make use of the cloud and the cloud application as optimally as possible is the desire to make continuous innovation a reality. This is the desire – and increasingly the necessity – to be able to modify, update and improve software faster and faster. In doing so, rather than replacing all code as a whole, a different piece of microcode is in each case substituted from the large set of microservices which make up the cloud application.
The advantage of this is clear: MySURF’s availability will be much higher since the service can remain up and running during modifications to the application. Users will be able to benefit from bug fixes and new features much more quickly than before. It is also possible to roll-out new features in a very controlled manner by not immediately releasing these to all users at once.
In the next blog about MySURF, Lara Gonzalez will share her view as a product owner and the perception of MySURF amongst the target groups.