The Modern Application Model

Layers of Abstraction

The Open Systems Interconnection model (OSI model) is perhaps the most well-known example of thinking in “layers”.

Image for post
Image for post
The OSI Model

Layers of Knowledge

In the same way that one does not need to know how to build a modern CPU from scratch, nor build an entire operating system to host one’s application, we no longer build our applications from scratch. To be a successful software developer, or to build a successful software technology business, requires little knowledge or concern for the underlying foundational systems. The foundational systems have been abstracted away by cloud service providers who have the domain experience and dedicated resources to build, maintain and operate the systems needed for the rest of us to build our software.

Defining The Modern Application Model

Most of today’s software development is occurring within the Application Layer as defined by the OSI Model. However that definition is a bit dated and does not exactly reflect today’s technology.

7.1 Infrastructure Layer

Abstract the OSI Layer model and offers software capabilities “as a service”, this is most commonly referred to as “The Cloud” and is serviced by vendors such as: AWS, Azure, GCP, IBM, etc …

7.2 Transaction Layer

Abstract and process low-level transactional needs of Applications, such as Payments, Emails, SMS, Image Processing, Data Transfer, etc …, serviced by Vendors such as: Twilio (Communications), Stripe (Payments), SendGrid (Email), Segment (Data), Cloudinary (Media), etc …

7.3 Integration Layer

An emerging layer created by the cloudification of Infrastructure and Transactional Systems. Application development relies on this layer to process data between Transaction Systems, and to facilitate the abstraction of the Logical Layer, where most business specific logic is built.

7.3 Logical Layer

Human-computer interaction layer, where applications can access services, and data sources. This is where companies build their intellectual property, business logic and distinguished offering.

Image for post
Image for post
The Modern Application Model

A Modern Example

Let’s bring a practical example into this model.

  • Homeowners & Contractors will interact with the marketplace with their individual, family or business accounts
  • Homeowners will pay the Contractors through the Marketplace, which takes a commission per project
  • Contractor are only paid when the Homeowner signs off on the project’s completion
  • Product research need to track and analyze how the marketplace is used to better improve the experience
  • Must secure customer data, and potentially adhere to regional data compliance laws

Step 1. Choosing Infrastructure Provider

Unless there is a critical business case, or some highly specific compliance requirement which forbids you from hosting your application infrastructure on the cloud, you’re most likely going to pick an Infrastructure Layer provider from one of the big players (Google, AWS, Azure) or smaller, yet more targeted providers (Netlify, Vercel, etc.).

Step 2. Choosing Transaction Providers

Your team might initially choose to use whatever programming framework they picked to do basic transaction processing needs, such as sending emails, image processing, processing credit card transactions, etc. — but soon enough, and certainly as your product grows, it becomes increasingly inefficient to own the cost of building and maintaining Transactional logic.

  • Analytics: Google Analytics, Amplitude, Mixpanel, …
  • Payments: PayPal, Stripe, Chargebee, …
  • Media Processing: Cloudinary, Imagekit. Imgix, …

Step 3. Building the Integration

While abstracting away concerns to vendors and service providers is a wise decision and a clear path to accelerate your team and product development, the reality is that with each cost savings through abstraction comes an additional cost penalty through time & knowledge.

  • Email System: SendGrid
  • Push Notifications: Airship
  • Label System: Shippo
  • Email System: SendGrid
  • CRM System: SalesForce

Step 4. Building your product (FINALLY!)

Did you forget? You still have not actually built the features that make your Marketplace unique yet! All the time spent in integrating and operating the Transactional Systems, while a necessity, is not really the core focus of your business. It shouldn’t be the highest cost, nor the highest knowledge area your team needs to acquire!

Towards Abstracting the Integration Layer

The state of Modern Application development introduces a lot of advantages and acceleration through abstractions. You don’t need to build a CPU from scratch, nor do you need to build an entire network architecture to start developing.

Co-Founder @ Cor.dev, Advocate of all things Open Source, Startup Advisor, Entrepreneur. Previously: npm, TELUS, Kong, CBC

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