Anton is a Developer Advocate in the Kotlin team at JetBrains. His professional interests include programming languages and developer tooling. Java Champion since 2014. Anton is also a co-organizer of DevClub.eu, a local developers community in Tallinn, Estonia.
Writing a single RESTful service is easy, but creating a scalable design is hard. Developers building their first distributed apps in the cloud are often puzzled by the choice of available frameworks and the variety of design options for the system architecture.
In this workshop, we’ll pick the three Ks for server-side development: the Kotlin programming language, the Ktor services framework, and Kafka for event streaming. We’ll start with the basics by exploring the Ktor framework and learn how to build a simple web application using obligatory functions, including handling HTTP requests, working with WebSockets, database access, authentication and authorization, logging, and more. We will also explore the plugin API and write a simple plugin for our web application.
Once you’re comfortable with Ktor, we’re going to model a distributed system where the actors communicate asynchronously. What are the requirements for such a system? Messaging, long-term storage, and real-time stream processing immediately come to mind. This is where Apache Kafka comes in. Kafka will help us make the system truly asynchronous, distributed, and resilient.
By the end of the workshop you will know:
How to create and deploy resilient RESTful services using Ktor. How to integrate Ktor with external libraries that require additional configuration. How to flexibly connect services using a variety of tools, such as Kafka streams. This will be a fast-paced workshop where attendees will spend most of their time coding.
KotlinX libraries complement the basic functionality provided by Kotlin’s standard library. In this talk, you will learn about the kotlinx.* libraries and supplying tools, which the Kotlin team is working on. We’ll cover functionality like serialization, date/time, and code coverage, as well as other libraries in the experimental state.