Friday, June 10, 2022

 This is a continuation of a series of articles on Microsoft Azure from an operational point of view that surveys the different services from the service portfolio of the Azure public cloud. The most recent article discussed Service Fabric. This document talks about core startup stack architecture.

A startup’s stack does not have the luxury of leveraging all the lessons learned by established companies. It needs to optimize deployment for speed, cost, and changing business needs. When a business starts out, it establishes areas of development, This suits a service-oriented or microservice architecture. This type of architecture is not sustainable for a product that does not have commercial traction. 

A core startup stack is monolithic but simple design and helps focus on the business needs. The design limits the time spent managing infrastructure but provides the ability to scale as the startup gains customer base.

The components of the startup stack include the following:

1.       A persistence layer comprising of Database, log aggregation, and Continuous Integration / Continuous Deployment

2.       A middle layer comprising App Servers and Static content

3.       A CDN comprising of distribution network

The CDN might come across as premature for a startup stack that has yet to grain customers but adding it later to an existing product comes with a lot of costs and inefficiencies that can be avoided by putting a façade behind which we can iterate on APIs and architecture,

The App server is the code that needs to run somewhere. It should be easily deployable and require least operational input. The app server should scale horizontally, but some manual intervention is required for scaling during the initial stages.

Traditionally, this was an web server on a virtual machine or BareMetal but Platform-as-a-service and container orchestration framework improved the infrastructure and lowered the operational overhead.

Serving static content from app server wastes resources but when we configure a CI/CD pipeline, the work to build and deploy static assets with each release is trivial. Most production web frameworks deploy static assets with CI/CD so it's worthwhile to start out by aligning with the best practice.

The Database is the inevitable store for all the business data. A relational database brings maturity to the data architecture, access and practice. Some use cases need a document database or other form of cloud stores 

Along with data, logs are equally important because they provide insights into the operations and assist with troubleshooting. If something goes wrong with the application, there is little time to diagnose the problem. Log aggregation and application tracing help the development team focus on the problems rather than poring over logs to retrieve the information.

A well-configured CI/CD pipeline enables repeated and rapid deployment of the software for incremental additions and testing. Quick and easy deployments is beneficial to iterative and agile software development. Frequent integration avoids divergent branches that require forward and reverse integrations. 


No comments:

Post a Comment