How to Choose Azure Compute Service

What is a compute service?

It’s the hosting model on which your application runs. Any cloud provider offers a number of compute services to host your application code. All compute services, generally fall into three main categories IaaS, PaaS, and FaaS. Lets see what each category is.

Infrastructure-as-a-Service (IaaS): You provision individual Virtual Machines, Networking, and Storage. Then you deploy your application code on it. You get full access to this machines can install any SDKs, and Softwares to make your applications work. It’s very much similar to you local workstation, only difference is it’s in cloud. But it comes with several risks and challenges that will make you spend very large amount of time in managing these VMs instead of focusing on your actual application.

Platform-as-a-Service (PaaS): It provides a managed hosting environment, where you only think of deploying your application and managing the just the enthronement to make your application work without needing to manage VMs or networking resources. Examples: Azure App Service.

Functions-as-a-Service (FaaS): It’s the simplest computing model, you only worry about your code, and not hosting environment. Your cloud provider takes the responsibilities of making your application run with almost zero downtime and at any scale. Example: Azure Function

Strategies

Choosing the right compute service depends on your needs, so evaluating all options is recommended. It might feel wasting time in the start, but it will help you in long term because each compute service comes with cost, time to to make it operational, and some other limits.

Also, you must know some cloud migration strategies:

Lift and shift: When migrating an existing workload to the cloud without redesigning the application or making code changes.

Cloud optimized: Sometimes you have to modify/refactor you application to take advantage of cloud-native features and capabilities.

Here is the flow diagram which will help you in deciding your compute service whether you are building a new application or migrating an existing one.

To explore more visit https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree.

The Importance of Software Architecture Styles

An architectural style is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

You must have heard the phrase “Don’t reinvent the wheel”. In this context, don’t waste time in coming up with your own solution architecture, instead you can focus on development by using the architecture styles which suits your business need. These architectures are proven and matured over time with help on industry experts

Some benefits of architecture styles:

  • Makes your solution flexible and extendible, usable on the long term.
  • Make it possible to adapt to new requirements.

Before i talk more about the architecture styles, let’s first understand what is software architecture and the importance of it.

What is Software Architecture?

Software architecture is a high level structure or blueprint which describes relations among different components used in the final solution. Which make easy the software understanding and development.

Irrespective of software development process(Agile, Waterfall) you choose, it’s recommended to decide the structure for your solution before writing a single line of code. Because changing the structure is very costly once implemented

These are the popular architecture styles:

What is TOGAF?

TOGAF is an enterprise architecture framework that helps define business goals and align them with architecture objectives around enterprise software development.

Software Design Patterns

Design pattern is a general reusable solution to a commonly occurring problem in software design.

Design patterns were originally grouped into the categories: creational patterns, structural patterns, and behavioral patterns.

Creational Pattern

It deals with mechanism how the objects should be created in a specific situation.

Popular creational patterns are

  • Abstract factory pattern, which provides an interface for creating related or dependent objects without specifying the objects’ concrete classes.
  • Builder pattern, which separates the construction of a complex object from its representation so that the same construction process can create different representations.
  • Factory method pattern, which allows a class to defer instantiation to subclasses.
  • Prototype pattern, which specifies the kind of object to create using a prototypical instance, and creates new objects by cloning this prototype.
  • Singleton pattern, which ensures that a class only has one instance, and provides a global point of access to it.

Structural Pattern

Structural patterns makes the design easy by identifying a simple way to realize relations among entities/classes.

Popular structural patterns are

  • Adapter pattern: ‘adapts’ one interface for a class into one that a client expects.
  • Bridge pattern: decouple an abstraction from its implementation so that the two can vary independently .
  • Composite pattern: a tree structure of objects where every object has the same interface.
  • Decorator pattern: add additional functionality to a class at runtime where subclassing would result in an exponential rise of new classes.
  • Facade pattern: create a simplified interface of an existing interface to ease usage for common tasks.
  • Flyweight pattern: a large quantity of objects share a common properties object to save space.
  • Marker pattern: an empty interface to associate metadata with a class.
  • Pipes and filters: a chain of processes where the output of each process is the input of the next.
  • Proxy pattern: a class functioning as an interface to another thing.

Behavioral Pattern

Behavioral design patterns deal with how objects will be carrying out communication with each other.

Popular behavioral patters are

Create a website or blog at WordPress.com

Up ↑