This document discusses serverless computing using Java on AWS. It provides an overview of new developments in the Java ecosystem in 2017-2018, including Java 9-10 and frameworks like Spring. It defines serverless computing as a cloud model where resources are dynamically allocated and managed by the cloud provider. Some advantages are horizontal scalability and paying for only what is used, while disadvantages include increased complexity and difficulty debugging. Design principles for serverless apps emphasize statelessness, idempotency, retries, and throttling. Examples show using the AWS SDK for Java and the aws-serverless-java-container.
2. What’s new in Java ecosystem
● September 2017: Java 9 (non LTS - March 2018)
● September 2017: Java EE 8 (JAX-RS 2.1, Servlet 4.0, CDI 2.0, ...)
● August 2017: “We (Oracle) believe that moving Java EE technologies
including reference implementations and test compatibility kit to an open
source foundation may be the right next step, ...”
○ Oracle -> Eclipse Enterprise for Java (EE4J)
○ Java EE -> Jakarta EE
● March 2018: Java 10 (non LTS - September 2018)
3. What’s new in Java ecosystem #2
● September 2017: Spring Framework 5 - Reactive
● March 2018: Spring Boot 2
● January 2018: Eclipse MicroProfile 1.3
○ Optimizing Enterprise Java for a microservices architecture
○ Config 1.2, Metrics 1.1, OpenAPI 1.0, OpenTracing 1.0, ...
4. Serverless computing & FaaS
Serverless computing is a cloud computing execution model in which the cloud
provider dynamically manages the allocation of machine resources.
Web applications, Data (stream) processing, IoT, Chatbots, IT (Cloud) Automation
https://www.youtube.com/watch?v=aBcG57Gw9k0
5. Serverless - Advantages
● Horizontally scalable by design
● Pay for what you use
● Underlying infrastructure managed for you (no servers, no docker, no k8s)
● NoOps?
6. Serverless - Disadvantages
● Increased complexity
● Distributed traceability/logging
● Tough to debug!!!
● Not suitable for heavyweight functionality?!?
● Cold Start
7. Serverless - Design principles
Well Architected Framework lens whitepaper: Serverless Application
● Share nothing architecture (stateless!)
● Design for failures and duplicates
○ Idempotency
○ Retries
○ Throttling