QCon New York 2019
In June I attended QCon conference held in New York. I would like to share with you my impressions.
QCon is a 3 day conference + 2 days of workshop. I attended the conference part. QCon is split to different tracks. Most of them are technical, but there are some concentrating on soft skills as well.
What I find interesting are Ask Me Anything sessions. Speakers from each track spent 1 hour answering questions from the audience. I attended some of them and the best one was Domain Driven Design AMA with Vaughn Vernon from Kalele, Indu Alagarsamy from Particular Software and Stuart Charlton from Pivotal. They shared their experience in implementing DDD in different companies. Even though I already participated in projects utilizing DDD approach, I think it is always good to hear what fellow developers went through and learn from their mistakes/success stories as well.
There were some nice presentations during the conference. First one belonged to “Modern CS in the real world” track. Talk of Colm MacCárthaigh was about PID loops and how they are used to keep AWS systems stable. PID loops measure system behavior after signal (of any kind) is sent to the system. Metrics are constantly gathered. Difference between expected and actual value is calculated and signal is so modified that the actual value gets closer to the expected one. It was really interesting to see this mechanism used in modern IT systems to solve common problems in production environment.
First of them are open loops. They occur when actions take place in the system (of any kind) and consequences of these actions are not measured. The solution is to close the loop i. e. start constant measures of the consequences.
Second are power laws. They occur in systems, where there are many small elements cooperating with each other to provide greater value. Sample of such configuration are IT systems and microservices environment. When one of the systems fail for any reason, for example due to broken contracts between services (how to avoid this you can read about Judge Dredd, an Open Source framework for contract testing in ), errors cascade to direct neighbors and exponentially further to other services. According to Colm, compartmentalization is the best solution of this problem. More compartments mean relatively smaller blast radius.
There are some other problems like lags (old information is sometimes worse than no information which are sometimes hard to avoid (spiky loads etc.), false functions (misleading metrics and dependencies between them leading to wrong analysis – to avoid this situation it is advisable to base analysis on basic metrics like CPU), edge triggering which means switching mode when particular threshold of value of the metric is reached (in case of controlling the new mode often kicks in at a time of high-stress).
Another interesting subject for me was presented during “Software defined infrastructure: Kubernetes, service mesh and beyond” track. I would like to mention 2 presentations here. First one, “The Service Mesh: It’s about Traffic” by Oliver Gould from Linkerd, introduced the audience to the definition of service mesh – it is infrastructure layer for handling service-to-service communication. Service mesh does the following things: load balancing, service discovery, routing, tracing, handles traffic policies, secures service to service communication. Linkerd was described as sample implementation of the concept. It is worth mentioning that there are more than one solution implementing service mesh concept like Istio. In order to avoid dependency to one technology, Service Mesh Interface is introduced. It is API used to isolate concept of Service Mesh of corresponding implementations. Definition of this API and its features were nicely described by Brendan Burns (from Microsoft Azure and Kubernetes co-founder) in his talk “Introduction to SMI (the Service Mesh Interface)”.
One of the best features of QCon was sharing experience from success and failure stories by fellow senior developers, technical leaders and architects. Here I would like to mention “Time Predictions in Uber Eats” talk by Zi Wang, whereby he described how Uber uses machine learning to accurately predict delivery times, “Machine-Learned Indexes – Research from Google” by Alex Beutel, whereby he goes through resent research on using machine learning algorithms to improve traditional data processing systems, “Conquering Microservices Complexity @Uber With Distributed Tracing” by Yuri Shkuro, whereby he describes methodology and solution that uses data mining to learn typical behaviour of systems from massive amounts of distributed traces, compares it with pathological behaviour during outages, and uses complexity reduction and intuitive visualizations to guide the user towards actionable insights about the root cause of the outages. The solution is built using modules available in the open source as part of Jaeger (distributed tracing system developed by Yuri Shkuro himself), Uber’s distributed tracing platform and an incubating project at Cloud Native Computing Foundation.
Visiting New York and participating in QCon 2019 was a good decision I had a chance to participate in many interesting talks, meet fellow developers from American companies, discuss with them in Ask Me Anything sessions and listen to inspiring talks.