Architecting Cloud Native Solutions Ft. Microsoft Azure

  1. Develop with cognizance: It starts from choosing the right framework [Read my older article here]. It’s a good idea to utilize decoupled and microservices, adhering to the separation of concerns (SoC) design principle. While it may not always be possible, design your components to be stateless wherever they can. Such applications are easier to scale and load balance.
  2. Automate as much as possible: Changes to infrastructure, CI/CD, elasticity, alerts, backups, and even billing 😉 can all be automated. Although the upfront investment is often higher, favoring an automated solution will almost always pay off in terms of the maintainability and performance of your system.
  3. Use managed services whenever possible: Cloud providers like Azure have a myriad of services that alleviate your effort to varying degrees. We’ll get back to this in some time.
  4. Things can fail at any time: To ensure that your application is resistant, employ a strategy to graceful degrade during errors. The goal is to maintain a good user experience in every possible scenario. Site Reliability Engineers often practice ‘Chaos Engineering’ for this purpose. In the context of developing cloud-native solutions, an application is expected to be resilient, highly available, fault-tolerant, and self-healing.
  5. Security needs to be built-in, not bolted on: With a lot more touchpoints, it is essential to ensure that your architecture conforms to the CIA triad. With malicious actors designing targeted attacks on cloud platforms, it is recommended to adopt an approach of defense-in-depth by applying authentication & authorization between each component.
  6. Optimize resource usage and costs: When used correctly, cloud computing can significantly reduce your total cost of ownership. Certain services can scale on-demand and you get to pay only when your code is executed. In the end, every business would want to deliver the best possible solution with minimal costs.
Tools and Technologies used
  1. The Flask API server was deployed on Azure App Services, a high-productivity, fully managed environment. There is hardly any code modification required to use these environments. With extensions for VS Code, you can deploy your app with just one click, literally. For all interactions between application tiers, JWTs were used to enforce AuthN and AuthR.
  2. Since Azure Cosmos DB implements the wire protocol for MongoDB, migrating and establishing a connection to the database was a cakewalk. By using a managed DB wrapper, we can benefit from capabilities such as global distribution, automatic sharding, SLA guarantees, encryption, backups, and much more.
  3. Static resources such as images and libraries were served from Azure Content Delivery Network. With Azure CDN, we can cache static objects loaded from the blob storage or any publicly accessible web server by using the closest point of presence (POP) server.
  4. Azure Functions was used to host a Node.js function that would have to run when certain events were fired. Since this workload was not suited to be a part of the API Server, it was decided to have it as a standalone component.
  5. As the business logic required us to support custom file uploads, Azure Blob storage was used to store and retrieve user-uploaded files. It is massively scalable and secure object storage for cloud-native workloads.
  6. Finally, to ensure an agile development lifecycle, Azure Repos and Azure DevOps were used to setup CI/CD pipelines and collaborate effectively. In practice, these solutions can accelerate your time to market.

--

--

--

An inquisitive Software Engineer & Cybersecurity Enthusiast

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Installing Docker on Raspberry Pi 4

Self Quantified: Mid-year update

35 WordPress Plugins to Enhance the User Experience of your Website — LearnWoo

Data Virtualization in SQL Server 2019

Advanced Facebook searches — Part 1

Tricks to code ealthy and Robust in Magento 2?

Top #10 services offered by AWS Cloud 2020

The Great JavaSwap migration!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Akash Ravi

Akash Ravi

An inquisitive Software Engineer & Cybersecurity Enthusiast

More from Medium

Monolithic Architecture and MicroServices Architecture

Cloud Native development considerations on Microsoft Azure

Service Mesh and Microservices

Microservices: Know why & Know how