TLC #16: Designing Resilient Software Systems
In the third post on the theme "designing better software solutions", let's talk about non-functional aspects that you must consider when designing software systems (Issue #16, 23 Jun 2024)
Hey, Ashwin here! Welcome to edition #16 of the Tech Lead Compass newsletter!
When designing a software system, several non-functional aspects, also referred to as Non-functional requirements (NFRs) must be considered. These qualities don't directly relate to specific behaviors or functions but rather describe how the system performs as a whole.
Here are 10 aspects that you should consider.
Performance - How well the system performs under various conditions. Throughput, latency, response times, and resource utilization are some metrics that help to measure and monitor performance
Scalability - Refers to a system’s ability to handle growth in workload or data volume, without impacting its expected performance.
Vertical (scaling up) and Horizontal (scaling out) scalabilities are common approaches used - the former referring to adding more physical resources on a single system while the latter add multiple copies of the system to handle the additional load
Asynchronous processing and Microservices architecture help decouple systems that are relatively easy to scale
Reliability - The system's ability to perform desired functions consistently and accurately over time. Fault tolerance, data integrity, disaster recovery, testing, and monitoring are some means to design a highly reliable system
Availability - Proportion of time the system is functioning as expected and ready to use. Self-healing systems, monitoring, and caching are some ways to improve system availability
Security - Focus on protecting the system, its data, and its users from unauthorized access, attacks, and data breaches. Authentication, authorization, encryption, vulnerability management, shift-left testing are mechanisms to build a secure system
Maintainability - Refers to the ease with which a system can be modified, updated, and managed over time. Code readability, good documentation, modularity, refactoring, dependency management, code reviews, and backward compatibility help maintainability by a mile
Usability - Focuses on how easy and pleasant a system is to use. It's about creating an effective, efficient, and satisfying experience for users. Intuitive interface, user experience design, consistency, accessibility, responsive design, and localization are proven ways to improve the usability of any system
Portability - Refers to the ease with which a system or component can be transferred from one environment to another. Underlying hardware / OS independence, containerization, data portability, configuration management, compilation, and build process lead to a highly portable system
Interoperability - Refers to the ability of different systems, devices, or applications to work together seamlessly. API contracts, standardization, data formats, event-driven architectures, integration patterns, cross-platform support, and semantic interoperability are some mechanisms to improve interoperability
Compliance - Ensures the system adheres to laws, regulations, standards, and specifications relevant to its domain and operation. Regulatory compliance, data privacy, security standards, industry-specific standards (PCI-DSS, HIPAA, etc.), data retention, ethical and third-party compliance, and licensing must be considered to build a highly compliant system
This list is by no means exhaustive. But a careful deliberation of these 10 aspects and taking steps to address them goes a long way.
Now on to the must-read news from the past week…
5 “Must-Read” Tech News for the Week
Certainly! Ilya Sutskever, one of OpenAI’s co-founders, has recently launched a new AI company called Safe Superintelligence Inc. (SSI). This venture comes just one month after his formal departure from OpenAI.
The company’s mission is to create a safe and powerful artificial intelligence system. Unlike OpenAI, which initially operated as a nonprofit organization, SSI is designed from the ground up as a for-profit entity.
With a market cap of $3.34 trillion, Nvidia now leads the pack, leaving Microsoft at $3.32 trillion
Apple is looking for Chinese AI partners (Macrumors)
Apple is actively seeking a Chinese partner for its AI features in China. Apple has explored partnerships with Baidu, Alibaba Group, and Beijing startup Baichuan AI, but no deal has been finalized. China requires government approval for chatbots powered by large language models, and Apple’s model was unlikely to receive it.
Anthropic, an OpenAI rival, has introduced a new generative AI model called Claude 3.5 Sonnet. This model can analyze both text and images, making it Anthropic’s best-performing model yet. It outperforms its predecessor, Claude 3 Sonnet, and even competes closely with OpenAI’s recently launched GPT-4o on certain benchmarks.
U.S. Surgeon General Dr. Vivek Murthy called on Congress to require warning labels on social media platforms, similar to those mandatory on cigarette boxes. He believes that social media is associated with significant mental health harms for adolescents, and a warning label could increase awareness and potentially change behavior.
That’s it for the week!
In case you missed the past articles, feel free to read them from here:
Are you a tech leader looking to connect with like-minded leaders, learn from them, and grow your network and career?
We launched a free, invite-only community for and run by tech leaders - TLC Tech Lead Mastermind Community. Click the link below to join. Looking forward to seeing you on the other side.