ByteByteGo Newsletter

Share this post

EP68: Top architectural styles

blog.bytebytego.com

Discover more from ByteByteGo Newsletter

Explain complex systems with simple terms, from the authors of the best-selling system design book series. Get 158 page System Design PDF, FREE
Over 590,000 subscribers
Continue reading
Sign in

EP68: Top architectural styles

ByteByteGo
Jul 15, 2023
179
Share this post

EP68: Top architectural styles

blog.bytebytego.com
3
Share

This week’s system design refresher:

  • 1 year of Youtube

  • Top Architectural Styles

  • Firewall explained

  • Two-tier infrastructure on AWS

  • How Developer to Tester Ratio Changed From 1:1 to 100:1


New Relic APM 360: The industry’s next evolution of APM (Sponsored)

Prevent issues before they occur. New Relic APM 360 goes beyond incident response and unlocks daily performance, security, and development insights for all engineers in one unified view.

Get started for free


1 year of Youtube

Click Here to Subscribe


Top architectural styles

In software development, architecture plays a crucial role in shaping the structure and behavior of software systems. It provides a blueprint for system design, detailing how components interact with each other to deliver specific functionality. They also offer solutions to common problems, saving time and effort and leading to more robust and maintainable systems.

chart

However, with the vast array of architectural styles and patterns available, it can take time to discern which approach best suits a particular project or system. Aims to shed light on these concepts, helping you make informed decisions in your architectural endeavors.

To help you navigate the vast landscape of architectural styles and patterns, there is a cheat sheet that encapsulates all. This cheat sheet is a handy reference guide that you can use to quickly recall the main characteristics of each architectural style and pattern.


Firewall explained to Kids… and Adults

A firewall is a network security system that controls and filters network traffic, acting as a watchman between a private network and the public Internet.

graphical user interface

They come in two broad categories:
Software-based: installed on individual devices for protection
Hardware-based: stand-alone devices that safeguard an entire network.

Firewalls have several types, each designed for specific security needs:
1. Packet Filtering Firewalls: Examines packets of data, accepting or rejecting based on source, destination, or protocols.

2. Circuit-level Gateways: Monitors TCP handshake between packets to determine session legitimacy.

3. Application-level Gateways (Proxy Firewalls): Filters incoming traffic between your network and traffic source, offering a protective shield against untrusted networks.

4. Stateful Inspection Firewalls: Tracks active connections to determine which packets to allow, analyzing in the context of their place in a data stream.

5. Next-Generation Firewalls (NGFWs): Advanced firewalls that integrate traditional methods with functionalities like intrusion prevention systems, deep packet analysis, and application awareness.

Over to you: Do you know what firewalls your company uses?


Two-tier infrastructure on AWS

An amazing illustration of how to use Terraform to create a robust Two-tier infrastructure on AWS.

Image Credit: Ankit Jodhani


Paradigm Shift: How Developer to Tester Ratio Changed From 1:1 to 100:1

This post is inspired by the article "The Paradigm Shifts with Different Dev:Test Ratios" by Carlos Arguelles. I highly recommend that you read the original article here.

1:1 ratio (~1997)
Software used to be burned onto physical CDs and delivered to customers. The development process was waterfall-style, builds were certified, and versions were released roughly every three years.

If you had a bug, that bug would live forever. It wasn’t until years later that companies added the ability for software to ping the internet for updates and automatically install them.

10:1 ratio (~2009)
Around 2009, the release-to-production speed increased significantly. Patches could be installed within weeks, and the agile movement, along with iteration-driven development, changed the development process.

For example, at Amazon, the web services are mainly developed and tested by the developers. They are also responsible for dealing with production issues, and testing resources are stretched thin (10:1 ratio).

100:1 ratio (~2020)
Around 2015, big tech companies like Google and Microsoft removed SDET or SETI titles, and Amazon slowed down the hiring of SDETs.

But how is this going to work for big tech in terms of testing?

Firstly, the testing aspect of the software has shifted towards highly scalable, standardized testing tools. These tools have been widely adopted by developers for building their own automated tests.

Secondly, testing knowledge is disseminated through education and consulting.

Together, these factors have facilitated a smooth transition to the 100:1 testing ratio we see today.

Over to you: What does the future hold for testing, and how is it currently working for you?

179
Share this post

EP68: Top architectural styles

blog.bytebytego.com
3
Share
3 Comments
Share this discussion

EP68: Top architectural styles

blog.bytebytego.com
Maruthu K
Writes Maruthu’s Substack
Jul 31

Developers across big tech companies have started using automated testing tools, which are proving to be very effective and efficient too. Testers should turn themselves into developers, although it may take time to build the development skills. If they don't do, they would not be able to find a place in big product development companies.

Expand full comment
Reply
Share
Matt McDonagh
Writes Life in the Singularity
Jul 21

Indeed, the landscape of software testing has transformed significantly over the years.

Scalable, Standardized Tools: With the advent of AI and Robotic Process Automation, we're seeing an era of highly scalable and standardized testing tools. These powerful tools allow developers to build their own automated tests, improving efficiency and reducing human error. Such an approach not only accelerates the testing process but also increases its reliability.

Knowledge Dissemination: The spread of testing knowledge through education and consulting has led to a more informed and skilled developer community. This empowers teams to incorporate best practices from the outset and solve problems more effectively.

This shift is reminiscent of the transformative power of technology that Steve Jobs embodied. Just as Jobs envisioned and actualized user-friendly, standardized tech products, today's testing tools have brought standardization and efficiency to software testing.

In the grand scheme of things, these trends are creating an ecosystem where quality software can be developed more quickly and reliably, ultimately contributing to the evolution of the technology world.

It's a fascinating time to be a part of this journey.

Expand full comment
Reply
Share
1 more comment...
Top
New
Community

No posts

Ready for more?

© 2023 ByteByteGo
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing