The presentation shows how architecture evolves in hyper grow companies like Qualtrics, Amazon or Netflix. It goes from monolith, through microservices to a multi-datacenter deployment. It includes a demo of 3 resilience patterns. Demo code can be found here: https://github.com/michalkutyla/resilience4j-demo
3. We’re going to talk about
● How architecture evolves with the business
● Monolith
● Microservices
● There will be coding demo
● No architecture is perfect
8. Successful products always grow
Small product
X-cart - 500K LOC
OpenCart - 350K LOC
Big product
Amazon.com - 50M LOC
9. We have 50 million lines of C++ code. [...] Stuff takes forever to do around here. An
Amazon engineer once described our code base as "a huge mountain of poop, the biggest
mountain you've ever seen, and your job is to crawl into the very center of it, every time
you need to fix something."
Steve Yegge
Link
38. Gremlin type Impact
CPU Generates high load for one or more CPU cores.
Memory Allocates a specific amount of RAM.
IO Puts read/write pressure on I/O devices such as hard disks.
Disk Writes files to disk to fill it to a specific percentage.
Blackhole Drops all matching network traffic.
Latency Injects latency into all matching egress network traffic.
Packet loss Induces packet loss into all matching egress network traffic.
DNS Blocks access to DNS servers.
Shutdown
Reboots or halts the host operating system, allowing you to test, for example, how your system behaves when
losing one or more cluster machines.
Time travel
Changes the host’s system time, which can be used to simulate adjusting to daylight saving time and other
time-related events.
Process killer An attack which kills the specified process, which can be used to simulate application or dependency crashes.
45. Microservices - summary
● Microservices can help with growing software:
○ Easier to scale
○ Small teams
○ Faster deployments
● Microservices introduce new level of complexity to the system and you need:
○ Design for failure
○ Have great tools
Jest to system rozproszony. To sa oddzielnne aplikacje, na roznych serwerach, komunikujace sie ze soba przez siec.
Kazdy serwis ma swoja baze danych
Kazdy serwis jest nieduzy a przez to:
Latwy do zrozumienia i dewelopmentu
Latwiejszy do testowania
Mozna w nim zmienic jezyk, biblioteki
Powinny byc przestrzegane zasady programowania obiektowego. Single responsibility principle
Przyklady z Amazonu: serwis do generujacy przycisk Buy. Serwis obliczajacy podatek przy zamowieniu.
OOP na poziomie architektury
Kazdy serwis ma swoja baze danych
Single responsibility principle
Przyklady z Amazonu:
Between 100-150 services are accessed to build a page (year 2007)
Amazon przy uzyciu takiego podejscie: co 11 s.
Netflix ponad 1000x dziennie
W qualtrics, moge kiedy chce zobaczyc swoj kod na produkcji.
https://hostingjournalist.com/video/aws-reinvent-2015-devops-at-amazon-a-look-at-our-tools-and-processes-dvo202/ (17:00)
Np, debugowanie.
Paypal,
Uber has over 1000 microservices
Wyłącznik instalacyjny (wyłącznik nadmiarowo-prądowy, wyłącznik instalacyjny typu DS nazywany też potocznie eską) – element instalacji elektrycznej, którego zadaniem jest przerwanie ciągłości obwodu, gdy prąd płynący w tym obwodzie przekroczy wartość bezpieczną dla tego obwodu. Wyłączniki te przeznaczone są do sterowania i zabezpieczeń przed skutkami przetężeń (przeciążeń i zwarć) obwodów odbiorczych instalacji oraz urządzeń elektrycznych w gospodarstwach domowych i innych.
In general, the goal of the bulkhead pattern is to avoid faults in one part of a system to take the entire system down. The term comes from ships where a ship is divided in separate watertight compartments to avoid a single hull breach to flood the entire ship; it will only flood one bulkhead.
Szczepionka
In Q2 2018, scale test tools team had piloted a Chaos testing tool (aka Resiliency testing) called Gremlin. The pilot was able to simulate crashes, dependency failures, put applications in unrecoverable mode. so far, these tests helped detect and prevent 3+ sev1/sev2 incidents.
In Q3, we are opening the doors to rest of the engineering org. If your team is interested in using this tool, please mail us at scale-test-tools@qualtrics.com or slack us at #scale-test-tools. We will be happy to help you.
To learn more about this tool's capability, please refer to the snapshot shown below. For further details, please visit this link.