Designing applications in Azure

I like to design applications for more scale, resilience, and manageability. Here are some things to keep in mind:

  • Make your applications self-healing as much as possible:
    • Design for failures and handle them
    • Log and monitor
  • Build for scaling out:
    • Offload resource intensive tasks
    • Design for scale in
    • Identify bottlenecks
  • Partition around resource limits:
  • Design with DevOps in mind:
    • Monitoring
    • Deploying
    • Escalation
    • Security/auditing
    • Make all thing observable
    • Treat configuration as code
  • Design for evolution:
    • Use loose coupling
    • Use asynchronous development patterns whenever possible
    • Use interfaces
    • Design for testing
    • Deploy services independently

There are a magnitude of design patterns to choose from. If you're finding it hard to decide which one to use, you can review them at https://docs.microsoft.com/en-us/azure/architecture/patterns/.

As we move forward, having discussed some common design approaches, Azure also enhances the five pillars of software development. Let's see what are they:

One of the most crucial choices you have to make when building solutions on Azure is whether or not you are working with sensitive information. If the information is sensitive in nature or falls under Personally Identifiable Information (PII), Health Insurance Privacy and Portability Act  (HIPPA), or GDFR, you will need to look at isolated networks environments in Azure. These choices come with consequences, even in closed ecosystems, as you will need to manage things like access (firewalls) and load balancing. However, you do gain extended isolation and can extend your internal network into this more secure piece of Azure.

Several environments fit into this, such as App Service Environment (ASE), Service Fabric, Custom VNets, and so on. It is crucial to understand this as this can drive cost. Isolated environments cost a significant amount more, not only from an Azure perspective but from an organization perspective (as there are more components in Azure to manage).

As fast as Azure changes, I typically look for opportunities to leverage the best of breed to solve issues. Typically, you will look up things based on what you are used to using internally, and Azure offers a bit more. So, when I typically want to do something in Azure, I look for what I am looking to accomplish, not what I am looking to do. For example, I may not look up how to store large amounts of data in SQL and look more at how to store telemetry data in Azure for IoT devices. This opened my eyes to the IoT hub as a transport and CosmosDB, which had the added benefit of speed.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.143.17.27