Software Architectures Gone Wild

Rate this content
Bookmark

Get ready for a run through the world of Software Architectures! Everyone who works in software has heard of terms like ‘pwa’, ‘monoliths’, ‘headless’ , ‘microservices’ and even ’service oriented architectures’. We all know what they are, but how much do we really know about them? In this talk, we will show you the differences, the similarities, when to use them, when not to use them, the success stories and of course: the massive failures. Get ready for a half an hour of tech-comedy: architecture is going to be fast and fun!

This talk has been presented at DevOps.js Conf 2021, check out the latest edition of this JavaScript Conference.

FAQ

Jamie-Maria Schauven is the cofounder of Deity and an expert in software architectures.

Deity focuses on software architectures, particularly in adapting and implementing flexible, integrable, reliable, extensible, and scalable systems.

The three main software architectures mentioned are monolithic architecture, decoupled architecture, and service-oriented architecture.

Headless architecture refers to decoupling the front-end from the back-end, which increases flexibility and allows the front-end to operate independently via APIs, enhancing scalability and maintainability.

A Progressive Web App (PWA) combines the features of a native app and a responsive website, offering benefits like offline functionality, push notifications, and improved load times, which enhance user engagement and experience.

Service-oriented architecture (SOA) improves software systems by separating back-end services and using middleware to manage communication, resulting in enhanced flexibility, scalability, and reliability.

Monolithic architectures are often rigid and difficult to modify or scale. They can lead to significant downtime and complexity when any changes are needed, making them less adaptable to evolving business requirements.

Jamie Maria Schouren
Jamie Maria Schouren
31 min
01 Jul, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
The Talk discusses different software architectures and their challenges. It highlights the trend of decoupling the front-end from the back-end and embracing headless architecture and Progressive Web Apps (PWA). The benefits of a service-oriented architecture (SOA) are emphasized, including flexibility, reliability, and scalability. The Talk also explores breaking down monolithic architectures into microservices and the importance of addressing pain points first. Additionally, it mentions the challenges of testing in a QA environment and the choice between microservices and monoliths depending on project goals.

1. Introduction to Software Architectures

Short description:

Hello, everyone. Today, I'm going to talk about software architectures and it's going to be wild so wear some sunglasses. It's 2021 and the Internet traffic is growing like crazy. We were all spending a total online of 82.5 billion in May 2020, which was a 77 percent growth year to year. To survive and basically to survive our website, we're going to need a software system that is flexible, integrable, reliable, and extensible.

Hello, everyone. My name is Jamie-Maria Schauven and I'm the cofounder of Deity. Today, I'm going to talk about software architectures and it's going to be wild so wear some sunglasses.

I really want to first, before I start, give some credit to the artwork. It's by James Booker and it's called Random Galaxy Art and it's really amazing. If you want to know more, talk with me or follow us. My Twitter can be found in the left corner. Please tweet and please ask me any question that you want.

Okay, let's start. So first of all, it's 2021. And while we were saving the world in 1944 by actually going to battle, today, we're doing that by staying home and staying on our phone. And most of us are really doing that. And we see that in the Internet traffic. The Internet traffic is growing like crazy. Here is the Internet usage, which was happening in the first part of 2020 until April. As you can see, it's doubling and it's been crazy. And not only the Internet usage. We have the same in the e-commerce world. We were all spending a total online of 82.5 billion in May 2020, which was a 77 percent growth year to year. If you can see in the chart on the right corner, that is only until April. There was 27 percent of all the retail was happening online in the US. And as you can also see, the growth was massive. We've been doing this and they say that the growth has been almost six years. What was projected has been happening right now.

To survive and basically to survive our website, as many websites are struggling with this amount of traffic and this amount of orders coming in, we're going to need some fires on our website. What do I mean with the fires principle? Well, actually, if you want to survive in these times and if you want to make sure that your website is ready for future growth, you're going to need a software system that is flexible so you can build whatever your business needs now and in the future. You're also going to need to have a system that is integrable so you can integrate with any data source out there, no matter where it comes from. And also, you're going to need to be reliable. Your website needs to make sure that you can handle all the traffic as soon as you're growing and as soon as you're moving forward. Obviously, you also need to be extensible.

2. Introduction to Architectures

Short description:

The markets are changing very fast and you need to be able to adapt new features, new technologies, new marketplaces in a very soon way. Unfortunately, the flexibility of most websites is really, really bad. We have three main architectures: the monolithic architecture, the decoupled architecture, and the service-oriented architecture. The monolithic architecture is the old and gold one in the monolith. Everything is tightly coupled. The UI layer, the data layer, the processes, and everything is very interwoven.

The markets are changing very fast and you need to be able to adapt new features, new technologies, new marketplaces in a very soon way. And you need to be able that your software can extend without adding any complexity. And last but not least, you need to be scalable so you can scale your business unlimited as soon as your traffic is hitting or as soon as you're growing.

Unfortunately, the flexibility of most websites is really, really bad. It's more like vodka than it is like yoga. And that all has to do with the architectures. So how are sites built? Software architectures are basically the beginning of how you build your system, and you're making a blueprint of each element that needs to be in your site and in the system as a whole. So not just do I need shipping and do I need pricing and do I need an image, but also how these correlate with each other, which system has to communicate with what in the back and in the front end.

Basically, we have three main architectures. We have the monolithic architecture. We have the decoupled architecture and we have the service oriented architecture. I'm going to start with the monolithic architecture. Well, the monolithic architecture is the old and gold one in the monolith. Everything is tightly coupled. The UI layer, the data layer, the processes, and everything is very interwoven. And it looks like this. On my slides? Yeah. So in the monolithic architecture, as you can see, the presentation layer is very stuck together to the business logic and the data interface in the layer design. You find these different layers, but yet they're still very close together. If something happens on the presentation side, your business logic is going to struggle. And if something happens in the business logic, your presentation layer is going to struggle. Also, when you want to change something to your website, you're going to have to change it really inside the layer. So inside the logic, everything is there. Search, images, pricing, stock. Everything is inside that logic. If you want to change your pricing, if you want to change the stock service, you're going to have to break it open and rebuild inside of it. As you can imagine, if you grow, it's going to be a very big mass. It's going to be very, very complex as soon as you add more features to that. So there's a few pros of monoliths. Basically, a monolith is very, very good as the application is packaged and deployed as one.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Scaling Up with Remix and Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Levelling up Monorepos with npm Workspaces
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Levelling up Monorepos with npm Workspaces
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
Understanding React’s Fiber Architecture
React Advanced 2022React Advanced 2022
29 min
Understanding React’s Fiber Architecture
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Full Stack Components
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Automating All the Code & Testing Things with GitHub Actions
React Advanced 2021React Advanced 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
We will learn how to automate code and testing with GitHub Actions, including linting, formatting, testing, and deployments. Automating deployments with scripts and Git hooks can help avoid mistakes. Popular CI-CD frameworks like Jenkins offer powerful orchestration but can be challenging to work with. GitHub Actions are flexible and approachable, allowing for environment setup, testing, deployment, and custom actions. A custom AppleTools Eyes GitHub action simplifies visual testing. Other examples include automating content reminders for sharing old content and tutorials.
Fine-tuning DevOps for People over Perfection
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Fine-tuning DevOps for People over Perfection
Top Content
DevOps is a journey that varies for each company, and remote work makes transformation challenging. Pull requests can be frustrating and slow, but success stories like Mateo Colia's company show the benefits of deploying every day. Challenges with tools and vulnerabilities require careful consideration and prioritization. Investing in documentation and people is important for efficient workflows and team growth. Trust is more important than excessive control when deploying to production.

Workshops on related topic

AI on Demand: Serverless AI
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
Deploying React Native Apps in the Cloud
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Deploying React Native apps manually on a local machine can be complex. The differences between Android and iOS require developers to use specific tools and processes for each platform, including hardware requirements for iOS. Manual deployments also make it difficult to manage signing credentials, environment configurations, track releases, and to collaborate as a team.
Appflow is the cloud mobile DevOps platform built by Ionic. Using a service like Appflow to build React Native apps not only provides access to powerful computing resources, it can simplify the deployment process by providing a centralized environment for managing and distributing your app to multiple platforms. This can save time and resources, enable collaboration, as well as improve the overall reliability and scalability of an app.
In this workshop, you’ll deploy a React Native application for delivery to Android and iOS test devices using Appflow. You’ll also learn the steps for publishing to Google Play and Apple App Stores. No previous experience with deploying native applications is required, and you’ll come away with a deeper understanding of the mobile deployment process and best practices for how to use a cloud mobile DevOps platform to ship quickly at scale.
MERN Stack Application Deployment in Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Joel Lord
Joel Lord
Deploying and managing JavaScript applications in Kubernetes can get tricky. Especially when a database also has to be part of the deployment. MongoDB Atlas has made developers' lives much easier, however, how do you take a SaaS product and integrate it with your existing Kubernetes cluster? This is where the MongoDB Atlas Operator comes into play. In this workshop, the attendees will learn about how to create a MERN (MongoDB, Express, React, Node.js) application locally, and how to deploy everything into a Kubernetes cluster with the Atlas Operator.
High-performance Next.js
React Summit 2022React Summit 2022
50 min
High-performance Next.js
Workshop
Michele Riva
Michele Riva
Next.js is a compelling framework that makes many tasks effortless by providing many out-of-the-box solutions. But as soon as our app needs to scale, it is essential to maintain high performance without compromising maintenance and server costs. In this workshop, we will see how to analyze Next.js performances, resources usage, how to scale it, and how to make the right decisions while writing the application architecture.
Azure Static Web Apps (SWA) with Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Juarez Barbosa Junior
Juarez Barbosa Junior
Azure Static Web Apps were launched earlier in 2021, and out of the box, they could integrate your existing repository and deploy your Static Web App from Azure DevOps. This workshop demonstrates how to publish an Azure Static Web App with Azure DevOps.