Hey all, I've got really exciting news.
I, @IamDavidOnuh, @HAKSOAT , @Lord__Sarcastic, @SLKhadeeja have been working on Ahnlich, an *In-memory vector database* in Rust.
https://t.co/BFaouXzcdx
Since meeting during TigerBeetle days, and on Discord since, I've been impressed with Haile (@haile_lagi) 's intelligence and passion for dbs/distsys. If you're looking for a developer with potential based out of Nigeria, talk to Haile.
RT for reach
https://t.co/Fdppu0qScD
๐๐ฒ๐๐๐ผ๐ป๐ ๐๐ฒ๐ฎ๐ฟ๐ป๐ฒ๐ฑ ๐ณ๐ฟ๐ผ๐บ ๐ง๐๐ฒ๐ป๐๐ ๐ฌ๐ฒ๐ฎ๐ฟ๐ ๐ผ๐ณ ๐ฆ๐ถ๐๐ฒ ๐ฅ๐ฒ๐น๐ถ๐ฎ๐ฏ๐ถ๐น๐ถ๐๐ ๐๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ๐ถ๐ป๐ด ๐ฏ๐ ๐๐ผ๐ผ๐ด๐น๐ฒ
Recently, a group of Site Reliability Engineers from Google shared their 20 years of experience building rock-solid distributed systems. Here are the lessons they learned:
๐ญ. ๐ ๐ถ๐๐ถ๐ด๐ฎ๐๐ถ๐ผ๐ป ๐ฝ๐ฟ๐ผ๐ฝ๐ผ๐ฟ๐๐ถ๐ผ๐ป๐ฎ๐๐ฒ ๐๐ผ ๐ผ๐๐๐ฎ๐ด๐ฒ ๐๐ฒ๐๐ฒ๐ฟ๐ถ๐๐: The response to an outage should be scaled according to its severity. Google realized this during a YouTube outage, where a high-risk mitigation led to further complications. The key is to assess and respond with a mitigation strategy that matches the outage's impact.
๐ฎ. ๐ฃ๐ฟ๐ฒ-๐๐ฒ๐๐๐ฒ๐ฑ ๐ฟ๐ฒ๐ฐ๐ผ๐๐ฒ๐ฟ๐ ๐บ๐ฒ๐ฐ๐ต๐ฎ๐ป๐ถ๐๐บ๐: Recovery processes must be tested and ready before emergencies. Google's experience with a YouTube caching issue underscores the importance of having well-practiced recovery mechanisms to ensure the smooth handling of unexpected situations.
๐ฏ. ๐๐ฎ๐ป๐ฎ๐ฟ๐ ๐ฎ๐น๐น ๐ฐ๐ต๐ฎ๐ป๐ด๐ฒ๐: Canarying changes is essential, especially for critical features. Google learned this when a seemingly minor caching configuration change at YouTube caused a significant disruption. Canarying changes help identify potential issues in a smaller, controlled environment before a full rollout.
๐ฐ. ๐ง๐ต๐ฒ '๐๐ถ๐ด ๐ฅ๐ฒ๐ฑ ๐๐๐๐๐ผ๐ป' ๐ฐ๐ผ๐ป๐ฐ๐ฒ๐ฝ๐: An easily accessible mechanism to revert changes is crucial. Google's experience with Google Calendar highlighted the need for a 'Big Red Button' to quickly undo potentially harmful changes, emphasizing the importance of having a fail-safe.
๐ฑ. ๐๐ป๐๐ฒ๐ด๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐๐ฒ๐๐๐ถ๐ป๐ด ๐ฏ๐ฒ๐๐ผ๐ป๐ฑ ๐๐ป๐ถ๐ ๐๐ฒ๐๐๐: Google stresses the importance of comprehensive integration testing in addition to unit tests. An outage in Google Calendar revealed that more than unit tests alone are required, as they do not fully replicate the complexities of real-world operations.
๐ฒ. ๐ฅ๐ผ๐ฏ๐๐๐ ๐ฐ๐ผ๐บ๐บ๐๐ป๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป ๐ฐ๐ต๐ฎ๐ป๐ป๐ฒ๐น๐: Reliable, independent communication channels are vital, especially during significant outages. Google's experience with a service-wide logout demonstrated the need for backup communication channels that are not dependent on the affected services.
๐ณ. ๐๐ป๐๐ฒ๐ป๐๐ถ๐ผ๐ป๐ฎ๐น ๐ฝ๐ฒ๐ฟ๐ณ๐ผ๐ฟ๐บ๐ฎ๐ป๐ฐ๐ฒ ๐ฑ๐ฒ๐ด๐ฟ๐ฎ๐ฑ๐ฎ๐๐ถ๐ผ๐ป: Designing services to degrade gracefully under stress is essential. Google advocates for intentionally degraded performance modes to maintain minimum functionality, ensuring a consistent user experience even during disruptions.
๐ด. ๐๐ถ๐๐ฎ๐๐๐ฒ๐ฟ ๐ฟ๐ฒ๐๐ถ๐น๐ถ๐ฒ๐ป๐ฐ๐ฒ ๐๐ฒ๐๐๐ถ๐ป๐ด: Testing for disaster resilience and recovery is crucial. Google's approach includes verifying that services can survive faults and disruptions and recover after a complete shutdown, ensuring business continuity.
๐ต. ๐๐๐๐ผ๐บ๐ฎ๐๐ฒ๐ฑ ๐บ๐ถ๐๐ถ๐ด๐ฎ๐๐ถ๐ผ๐ป๐: Automating mitigation processes can significantly reduce resolution time. Google's experience with a network failure that impacted services globally highlights the efficiency of automated responses in crises.
๐ญ๐ฌ. ๐๐ฟ๐ฒ๐พ๐๐ฒ๐ป๐ ๐ฟ๐ผ๐น๐น๐ผ๐๐๐ ๐๐ผ ๐บ๐ถ๐ป๐ถ๐บ๐ถ๐๐ฒ ๐ณ๐ฎ๐ถ๐น๐๐ฟ๐ฒ๐: Regular, frequent rollouts can decrease the likelihood of failures. Google learned this from a payments system outage, where delayed rollouts contributed to the problem. Frequent rollouts, coupled with proper testing, can help avoid such issues.
๐ญ๐ญ. ๐๐ถ๐๐ฒ๐ฟ๐๐ฒ ๐ต๐ฎ๐ฟ๐ฑ๐๐ฎ๐ฟ๐ฒ ๐๐ผ ๐ฎ๐๐ผ๐ถ๐ฑ ๐๐ถ๐ป๐ด๐น๐ฒ ๐ฝ๐ผ๐ถ๐ป๐๐ ๐ผ๐ณ ๐ณ๐ฎ๐ถ๐น๐๐ฟ๐ฒ Relying on a single hardware model for critical functions is risky. Google's experience with a network device bug causing regional outages highlights the importance of having a diverse infrastructure to prevent widespread failures.
#technology #softwareengineering #google #techworldwithmilan #distributedsystems
Redis is not faster than your SQL database, it's just different.
It's usually under less load. It's key-value, not relational, so looking up simple things can feel faster (but it could also be fast if you used a hash index on your SQL database).
It's not magic, just different.
Do not use your energy to worry. Life is too short to worry about stupid things. Have fun. Fall in love. Regret nothing, and don't let people bring you down. Study, think, create, and grow. Teach yourself and teach others.