Cloud computing is not something new and upcoming. It has been around since 2006 when big companies like Google began using the term to describe the paradigm shift of services and applications hosted on servers on the cloud. It allows organisations to scale on-demand, to leverage on virtualisation, and to reduce costs on maintenance and rentals for server rooms. But more than a decade since then, we still have not yet been able to fully utilise the total capacity of this amazing technology.
One of the major impediments behind this is that Cloud setup can require some level of expertise. The reason behind that is the layer of complexity before you get it all working smoothly. There are options and parameters to work with, to get them in sync in order to give you an optimal experience. And THIS is what often makes people warier to adopt this revolutionizing technology. No one wants to put their money on something which they might lack the expertise to deal with fully. There is always some amount of technical risk to, therefore, be considered.
And this is where, in my opinion, Azure Spring Cloud steps in. It seems to offer a one-stop solution, a sort of a pre-compiled packaging of settings even, that can get you started quickly. It helps consolidate all that you need to do, in the setup of your application. Also, depending on the demand of your product, it gives you the freedom to make modifications to those settings as necessary. As they say, with great power comes greater responsibility, and if you don’t feel up to the task to take that responsibility just yet, well I guess Azure cloud gets you started in the right direction at least.
What makes things complicated
So what is Spring Cloud? It is a popular framework for Java microservices. It provides developers the tools to quickly set up complex pre-defined patterns for distributed systems. This way, one can quickly start up services and applications, while implementing those patterns eg. Service Discovery, Routing, Service to Service calls, to name a few. Therefore this works great in typical use cases of the current day business solutions.
Sounds great actually. But the reality is, once you go to the documentation page for Spring Cloud, you will notice that in a bid to offer a lot of different services, there are a lot of things to choose from. A lot of things to read through. Depending on how long you have been working with a certain technology, you may or may not feel comfortable going through this very detailed and technical documentation. It is definitely a well-documented plug and play of services, but the complications associated have not been fully abstracted. Also sometimes you are only tackling a simple problem instead of a complex one. In these cases, the effort required to get onboarded with Spring Cloud might not break even with the immediate benefits.
Thus, this might often-times leave us with the following problems:
1. A complicated application lifecycle
2. A challenge to manage the Cloud infrastructure
3. And troublesome troubleshooting of issues
And this is where Azure Spring Cloud steps in. A joint collaboration of Pivotal Lab and Microsoft, this Cloud-as-a-Service platform helps to make our lives easier.
Value proposition of Azure Spring Cloud
Well, it is not news for anyone that Spring Framework and Java are still heavily used in the tech industry. If only, the usage has been growing. Frameworks like Spring Cloud, Spring MVC, Spring Boot are super helpful in setting up your application with a lot of ease and quickly. But this process gets even simpler with the introduction of Azure Spring Cloud.
Some of the direct advantages of Azure Spring Cloud are:
1. Accelerates development — There are easy one-click methods to switch between different services or different images of the same services. This tends to be especially useful when you are performing parallel development on complex systems, which have shared microservices. For those of us who have been there, regression testing or maintaining multiple versions could be a big challenge in such complex environments. Hence one could leverage on Azure Spring Cloud to even plug and play with different versions of the same services. Also the API Gateway features greatly simplifies the communication between services, making the setup dynamic. Thus it takes away some of the complexities that arise with Microservices, leaving you to reap the benefits of the awesome design pattern.
2. Reduces Deployment Risk — Azure Spring Cloud provides you with a UI tool to switch around the images that you are working with, with just the click of a button. It also greatly assists the Blue-Green Deployment strategy, where one maintains two production environments at all times, for contingency. This in return greatly reduces the downtime as well. Azure Spring Cloud makes it really simple to implement this, and I am sure all of us are happy to offload some of the complications to deal with at the time of deployments. Stability in deployment, definitely in turn paves the way for enabling Continuous Deployment.
3. Simplified Management of Configuration — One of the most exciting things that I feel about Azure Spring Cloud is the Spring Cloud Config Server. It is similar to the configuration files that you would need to generally maintain as part of your Spring Boot application or service. And also a similar way of referencing in the code as well. But the differentiating factor being that it can be maintained online, as part of the Azure Spring Dashboard. It allows for a centralized location for all configurations instead of scattering them across different server boxes for each microservice. This, in turn, allows for an easier rollback or change when needed. Also, in certain ways, it improves the level of security, where you can move sensitive parameters of your application from code to this centralised configuration location. It allows for an externalized configuration and is particularly useful in a distributed system. So one could simply link the configuration file using your code repository url, along with appropriate authentication to access it.
4. Integrated Logging and Reporting — Usually when we are working with distributed services, logging and reporting both tend to be critical features. Because of the possibility of multiple failure points. One of the features which Azure Spring Cloud offers is the ability to view service logs and system reports in the same dashboard on dedicated windows. This allows us to capture matrices about your application and further optimise performance.
5. Ease of use — Well this is a no-brainer, provided we have already gone through the advantages mentioned above. But just to mention once more, that even features like provisioning or scaling of your app, tend to be extremely simplified with the use of the simple UI dashboard to update these. It might not be a unique feature here, but it is worth a mention that this is something possible with Azure Spring Cloud as well. One is able to even control things like which Java version to use, from a drop-down list, which in my opinion could be pretty handy. Especially at the time of regression testing during version upgrade activities.
Therefore, as clearly enlisted above, the primary value proposition I find for Azure Spring Cloud, is that it greatly enhances one’s ability to make the most out of Cloud and distributed systems, making the experience as smooth and streamlined as possible. It helps to take care of all the plumbing effort which you might have had to perform, in order to have an integrated streamlined solution for your use-case.
All in all, I think it is an amazing step ahead by Microsoft and Pivotal, towards streamlining the app management process and integrating all of the different modules into this single product. This, therefore, has great potential, especially when working with complex systems. If you already have some components of your application with Azure and Microsoft, this might be a great addition to explore. Because this could become the single point of control, and hence greatly reduce the complexity, by getting everything under a single umbrella.
Currently, it is only available for Java Spring, but there are plans for upcoming support for the other technologies in the near future, and C# would be one of the next candidates in the list. Therefore this is certainly an avenue to look out for if being technology-agnostic is one of your concerns.
All in all sounds like an exciting thing to get your hands in. And if you haven’t yet delved into cloud computing yet, maybe it’s time to check it out.