Your application architecture should match the problem your product is solving and can evolve over time as a required response to scale. Technology teams do not properly prioritize architectural changes.
Modern monolithic MVC frameworks like Ruby on Rails, Django, Laravel, or SailsJS are great for initially finding product-market fit as it allows a small development team to build a lot of functionality, quickly.
On the other hand, Microservices are best suited for large engineering teams to deliver reliable functionality across large applications. If scale is an issue in your near future, service-first design or severless architectures like AWS Lambda may provide better outcomes.
Single Page Applications
Separation of concerns through splitting the frontend and backend help deliver modern interactive experiences while scaling servers into computational services and rendering services. These two halves interact over a RESTful (or other) API. If a product needs a mobile app and backing server (for communication) this is often a natural place to start, as the backend serves data to the frontend (mobile app) that handles the User Interface.
For frontend-only web applications, we recommend using Single Page Application frameworks to deliver modern experiences. ReactJS is Vaporware’s framework of choice, which solves a small core pattern of modern web applications. When building new React apps, we recommend Create-React-App to quickly provide a developer friendly experience.
Application Programmable Interfaces (APIs)
For both frontend split monolith apps and microservice architectures, APIs are used to define a “contract” specification between systems. When building scalable APIs, we recommend using an API Documentation platform like Swagger (OpenAPI 3) or Slate.
Versioning the API early allows for non-breaking change roll-outs at scale, while Testing and Change Management become key processes most development teams underestimate while delivering an API-first system.
Creating a public API opens your entire product to new business deals, but often creates new challenges for organizations across legal, financial, marketing and sales. When building a platform to be consumed through an API, many of these functions fall directly to development teams, as Developer Experience and Customer Experience are synonymous.
APIs may be disappearing completely as these interfaces becomes flexible through the use of GraphQL, a query language designed to be as flexible as SQL on HTTP. While we have delivered several GraphQL applications for startups, we only recommend GraphQL to technology-first organizations looking towards a more flexible future, as it fundamentally changes the approach to software development and operations.