𝗪𝗵𝗮𝘁 𝗶𝘀 𝗰𝗵𝗮𝗼𝘀 𝗲𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴, 𝗮𝗻𝗱 𝗵𝗼𝘄 𝗱𝗼𝗲𝘀 𝗶𝘁 𝘄𝗼𝗿𝗸?
Deliberately inject faults into your system.
Yes, you read that correctly. This is what chaos engineering is all about.
Chaos engineering improves system resilience by deliberately injecting faults into systems in a controlled manner, allowing engineering teams to proactively detect and address potential failures before they occur.
What’s the need for chaos engineering?
Unscheduled downtime is never a good thing.
The loss of user trust can have a devastating impact. And for some systems, unscheduled downtime can lead to major consequences. Think healthcare.
However, modern software systems are inherently complex. And complexity only increases when a system becomes distributed.
There are bound to be points of failure.
And that’s why proactively finding and addressing them is so important.
This is where chaos engineering comes in.
Chaos engineering is grounded in five fundamental principles:
🔹 Hypothesis-driven approach
It begins with defining what normal system behavior looks like, establishing metrics that reflect the system's steady state.
This clear definition sets the stage for understanding the impact of introduced variables.
🔹 Real-world event simulation
This involves introducing variables that simulate real-world disruptions such as network outages or traffic spikes.
These simulations are not random; they mimic disruptions likely to occur in the actual environment, providing valuable insights into how the system copes.
🔹 Experiments in production
While testing in a controlled setting has its place, real-world conditions often reveal unforeseen vulnerabilities.
These tests in production (or as close to it as possible) should be carefully monitored to ensure accuracy without causing significant user impact.
Testing in production is controversial. There are contexts where it can work great and a lot where the risks are too great.
If it makes sense for an organization to run experiments in production, it must proceed with prudence and be done in a way that mitigates blast radius and user impact if something were to go wrong.
🔹 Automation at scale
As systems scale, manually conducting experiments becomes impractical.
Automated tools and scripts allow systematic testing across various parts of the system, making the process efficient and comprehensive.
🔹 Minimizing impact
This involves strategies like starting with smaller experiments to limit the 'blast radius' and gradually scaling up.
The goal is to learn and improve without compromising overall system stability, ensuring a balance between resilience testing and maintaining operational integrity.
Read our full article here: https://t.co/pp9Ru1GuwN
Thank you to our partner Postman who keeps our content free to the community.
Wish building APIs was simpler and more organized? Postman Collections does just that. Check it out: https://t.co/edRwwpG9FD
There are over 1,000 engineering blogs. Here are my top 9 favorites:
- Netflix TeachBlog
- Uber Blog
- Cloudflare Blog
- Engineering at Meta
- LinkedIn Engineering
- Discord Blog
- AWS Architecture
- Slack Engineering
- Stripe Blog
Over to you - What are some of your favorite engineering blogs?
--
Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://t.co/uc5M7CdXXC
How do companies ship code to production?
The diagram below illustrates the typical workflow.
Step 1: The process starts with a product owner creating user stories based on requirements.
Step 2: The dev team picks up the user stories from the backlog and puts them into a sprint for a two-week dev cycle.
Step 3: The developers commit source code into the code repository Git.
Step 4: A build is triggered in Jenkins. The source code must pass unit tests, code coverage threshold, and gates in SonarQube.
Step 5: Once the build is successful, the build is stored in artifactory. Then the build is deployed into the dev environment.
Step 6: There might be multiple dev teams working on different features. The features need to be tested independently, so they are deployed to QA1 and QA2.
Step 7: The QA team picks up the new QA environments and performs QA testing, regression testing, and performance testing.
Steps 8: Once the QA builds pass the QA team’s verification, they are deployed to the UAT environment.
Step 9: If the UAT testing is successful, the builds become release candidates and will be deployed to the production environment on schedule.
Step 10: SRE (Site Reliability Engineering) team is responsible for prod monitoring.
--
Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://t.co/uc5M7CdXXC
Deploying software should NOT be a nail-biting affair.
It should be fun and exciting.
Two amazing deployment strategies can make it possible.
✅ Blue-Green Deployments
Two identical production environments are maintained.
Yes, the famous combination of Blue and Green.
Incoming requests are switched between them seamlessly.
In case of any issues, you can immediately switch back to the version that works.
This minimizes downtime and provides a reliable way to rollback the changes if needed.
If safety is your main worry, Blue-Green deployments are really useful.
✅ Canary Deployment
If you are worried about rolling out a new feature to all the users at one go, Canary Deployment is for you.
Rather than a big-bang approach to deployment, new features are rolled out to a small percentage of the users (represented as traffic in the animation)
After real-time monitoring and analysis of the impact, the feature is rolled out to the entire user base.
Great for risk mitigation and gaining confidence about your release.
So - which one of these deployment techniques do you like the most?
Or is there some other deployment approach that you prefer?
Understanding execution order of SQL queries!
Before you can optimize SQL queries, you must understand their order of execution!
The order of execution is different from how you write it, here's the actual order:
1️⃣ FROM: Determines the tables of interest
2️⃣ JOIN: Joins the tables of interest as per specification and sets up the base data.
2️⃣ WHERE: Applies a filter to the rows returned from the FROM clause. It restricts the result set to only those rows that meet a specified condition
3️⃣ GROUP BY: Groups rows that have the same values in specified columns. It is often used with aggregate functions ( eg. COUNT, MAX, MIN, SUM, AVG) to perform calculations on each group.
4️⃣ HAVING: Similar to the WHERE clause, but it is used to filter groups based on aggregate functions. It is applied after the GROUP BY clause.
5️⃣ SELECT: Used to specify the columns from the filtered results to display in the query's result set. It can include column names, aggregate functions, and expressions.
6️⃣ ORDER BY: Sorts the result set returned by the query in ascending (ASC) or descending (DESC) order based on one or more columns.
7️⃣ LIMIT: Restricts the number of rows returned by the query.
_________
That's a wrap!
If you interested in:
• Python 🐍
• ML/MLOps 🛠
• CV/NLP 🗣
• LLMs 🧠
• AI Engineering ⚙️
Find me → @akshay_pachaar ✔️
Everyday, I share tutorials on above topics!
I also write a weekly Newsletter on AI Engineering, link in the next tweet!
Cheers!! 🙂
Irfan bhai, I'm happy that you understand the pain of children, and I stand with you on that. But please do speak about Pakistani Hindus as well. The situation is not very different here in Pakistan.
Come to my country Pakistan if you are feeling ashamed to be an Indian. India doesn’t need people like you.
I am sure many people in India will be happy to sponsor this trip.
#SaptaSagaradaacheEllo gutted me. Such a haunting, poetic, understated love story. @rakshitshetty & @rukminitweets are superb. As is the direction by @hemanthrao11. I can’t wait to see part 2. I hope Manu & Priya find some semblance of happiness. I will be miserable otherwise!
🚀PSLV-C57/🛰️Aditya-L1 Mission:
The launch of Aditya-L1,
the first space-based Indian observatory to study the Sun ☀️, is scheduled for
🗓️September 2, 2023, at
🕛11:50 Hrs. IST from Sriharikota.
Citizens are invited to witness the launch from the Launch View Gallery at Sriharikota by registering here:
https://t.co/qTktkZHfZk Commencement of registration will be announced there.
https://t.co/0JAzdTAwWO