Serverless & Distributed Computing
Wednesday, February 17, 2021
Tracing can be very powerful. It gives the ability to connect the customer experience to the backend services several hops away. This comes down to what information is in your traces. There isn't one standard set of tags to add for EVERY application. It comes down to how traces are used and what matters to your organization. During this session we will discuss the need for tracing, dive into the why (and what) you would want to trace via distributed tracing, and delve into the OpenTelemetry specs and architecture on how we can tailor (or tag) our traces. You’ll leave with an understanding of the semantic context in OpenTelemetry and how it might help you understand your applications.
Thursday, February 18, 2021
Microservices are becoming mainstream now and the majority of new applications are developed using microservices architecture. But they throw some unique challenges around DevOps and Observability due to following:
- Rise of API ecosystem
- Application complexity is rising
- Applications are becoming more distributed
- Tech Stack is becoming broader and bigger everyday
- Hybrid and multi-cloud is becoming reality
- Monoliths to Microservices
Distributed Tracing, which is getting a lot of mindshare in the last few years is now becoming the new foundation of DevOps. Unlike traditional Application Performance Monitoring (APM), Distributed Tracing is intended to address the observability challenges and use-cases in the new microservices world.
eBPF advancement in Linux kernel brings whole new opportunities around kernel and application tracing. eBPF used in conjunction with distributed tracing unlock many interesting opportunities.
Eventually, Distributed Tracing will be a new APM, addressing MELT use-cases comprehensively (Metrics, Events, Logs and Traces). It is particularly well-suited to debugging and monitoring modern distributed software architectures, such as microservices. It helps pinpoint or isolate where failures occur and what causes sub-optimal performance.
It basically traces a network request as it travels through your services, as it would be in a microservices-based architecture. One of the main reasons you may want to do this is to troubleshoot or monitor the latency of a request as it travels through the different services.
In this talk, we will discuss Distributed Tracing and it’s various use cases in today’s cloud native world along with Demo of Distributed Tracing using some sample applications!
The growing demand for serverless computing runs parallel with the demand for businesses to rapidly scale up their software applications. Within the last five years, serverless has grown exponentially, however it still only represents a tiny fraction of all computing that takes place in the cloud.
There are important factors gating wider adoption, the most significant of these is the the absence of support for stateful workloads and applications. In this session, Rodric Rabbah, CTO and co-founder of Nimbella, will address those limitations and make suggestions on how the industry could realize the full potential of serverless architecture by leveraging native support for state in the serverless platform. Topics will cover how this approach works and why it is necessary to support state natively in the serverless platform.
This talk will leave attendees with the understanding of what stateful serverless offers developers, focusing on the ability to build complex workflows and stateful APIs with all the benefits of serverless. This includes no infrastructure or data stores to manage, no storage to provision explicitly, instant availability, and elastic scalability. In all, stateful serverless enables enterprises to rapidly scale their application layer in a cloud native environment.
At the beginning of this year, I built Superpeer with a serverless architecture. We got a total of $10M investment in two different rounds.
Going serverless was one of the best decisions I made at the very beginning, and I am going to talk about the topics below:
- What did we learn from Cloud Functions, and why we switched to Cloud Run?
- How could I continue sleeping during our biggest launches?
- How serverless allowed me to scale my engineering team to 17 engineers?
- How about the costs?
We went from a single monolith to a set of microservices that are small, lightweight, and easy to implement. Microservices enable reusability, make it easier to change and scale apps on demand but they also introduce new problems. How do microservices interact with each other toward a common goal? How do you figure out what went wrong when a business process composed of several microservices fails? Should there be a central orchestrator controlling all interactions between services or should each service work independently, in a loosely coupled way, and only interact through shared events? In this talk, we’ll explore the Choreography vs Orchestration question and see demos of some of the tools that can help.
OPEN TALK (CloudWorld): Pragmatic App Migration to the Cloud: Quarkus, Kotlin, Hazelcast and GraaIVM in ActionJoin on Hopin
At a point in the past, it was forecast that Java would die, but the JVM platform would be its legacy. And in fact, for a long time, the JVM has been tremendously successful. Wikipedia itself lists a bunch of languages that run on it, some of them close to Java e.g. Kotlin, some of them very remote e.g. Clojure.
But nowadays, the Cloud is becoming ubiquitous. Containerization is the way to go to alleviate some of the vendor lock-in issues. Kubernetes is a de facto platform. If a container needs to be killed for whatever reason (resource consumption, unhealthy, etc.), a new one needs to replace it as fast as possible. In that context, the JVM seems to be a dead-end: its startup time is huge in comparison to a native process. Likewise, it consumes a lot of memory that just increase the monthly bill.
What does that mean for us developers? Has all the time spent in learning the JVM ecosystem been invested with no hope of return over investment? Shall we need to invest even more time in new languages, frameworks, libraries, etc.? That is one possibility for sure. But we can also leverage our existing knowledge, and embrace the Cloud and containers ways with the help of some tools.
In this talk, I’ll create a simple URL shortener with a “standard” stack: Kotlin, JAX-RS and Hazelcast. Then, with the help of Quarkus and GraalVM, I’ll turn this application into a native executable with all Cloud/Container related work has been moved to the build process.
Friday, February 19, 2021
KEYNOTE (CloudWorld): Ro -- Serverless - How to Speed up Tests over 300 Times and Achieve Continuous Feedback?Join on Hopin
Modern software development methodologies and approaches help to increase delivery speed while still caring about software quality. However, if we think about manual regression tests, they are not only time consuming and repeatable, but also feedback time is quite high. These are the reasons why regression tests are often automated.
Automated tests can provide results faster and it’s possible to execute them more frequently than manual ones. They can decrease the overall time needed for tests, but what's probably even more important, they allow to test and receive feedback earlier in the development process. It's essential if we want to release and deliver business value faster and more frequently.
But what if we have more and more tests and even automated execution of them takes too much time - 10 minutes... 30 minutes... maybe even hours? Should we consider the ability to execute full tests set just a few times a day as something normal? Is adding more compute resources the only option to reduce the execution time? Or maybe there are too many high-level tests and some of them should be replaced by low-level ones according to the Test Pyramid? Is the Test Pyramid still valid in the cloud world?
During the presentation, you will see how the serverless cloud services like AWS Lambda may be used to run tests in the highly parallelized environment that can speed up test execution even hundreds of times.
Cloud deployments offer the potential for almost infinite resources and flexible scalability. But there are so many options! It can be overwhelming to know which services are best for your use case. Building distributed systems which take advantage of in-memory computing only adds to the complexity. During this session we will introduce the Apache Ignite in-memory computing platform and identify key metrics that can help you maximize application performance on your existing cloud infrastructure. We will provide best practices on how best to structure and deploy in-memory applications on both public and hybrid clouds.
Serverless cloud technologies have been around for some time now and most of us know the benefits include simpler management and pay-per-use billing. There are additional benefits on top of these, however, adoption of this technology is not as straightforward as other cloud transition strategies. In this talk, we explore the advantages of serverless technologies, highlight the architectures that support them, and discuss the challenges of adoption.
As we go through these points you will hear from an organization that has embraced Serverless technology and are well on their journey towards full adoption. You will hear about the reasons they selected serverless, the challenges they faced while adopting the serverless mindset, and how they overcome these challenges.