“Serverless is the fastest way to build modern applications”
- Adrian Cockcroft,
VP Cloud Architecture Strategy, AWS.
The path for an organisation for a transformation could look different for different organisations. And there’s nothing that we have certain for everyone. You will be faced with two options: to build that fantastic new feature or system in a serverfull way or serverless.
The serverfull way looks no trouble and safe, and the serverless way looks more handful for your organisation. The serverfull way roads seem like more travelled than the serverless way which is less travelled.
In reality, both the roads are equally travelled and lead to the same destination. All roads lead to Serverless because one has to create value for the organisation and customer faster.
Serverless means:— Rick Houlihan (@houlihan_rick) October 3, 2020
1. Never having to patch another OS.
2. Never being paged when a rack goes down.
3. Never needing to rollout software on a hundred nodes.
4. Never paying for idle infrastructure.
5. Never losing business because you can't scale. pic.twitter.com/pUrby2odaW
Serverless removes the undifferentiated heavy lifting:
- No infrastructure provisioning and no management.
- Pay for the value
- Automatic scaling
- Highly available and secure
Serverless is there for you, at every layer
Compute and Access
AWS Lambda: AWS Lambda is an event-driven, serverless computing platform provided by Amazon as a part of Amazon Web Services. With Lambda, you can run code for virtually any type of application or backend service - all with zero administration. Helping you to focus on your core product and business logic instead of managing operating system (OS) access control, OS patching, right-sizing, scaling, etc.
Few Use Cases:
- Allows you to perform real-time file processing and real-time stream processing
- Use for creating web applications
- Use in Amazon products like Alexa Chatbots and Amazon Echo/Alexa
- Data processing (real-time streaming analytics)
Lambda @Edge: With Lambda@Edge, you can enrich your web applications by making them globally distributed and it’s a service that allows you to execute Lambda functions that modify the behaviour of CloudFront specifically. It simply runs during the request cycle and makes logical decisions that can affect the delivery of the CloudFront content.
Few Use Cases:
- You can combine Lambda@Edge with other AWS services when building applications at the network edge.
- Authorize and authenticate users by filtering out unauthorized requests before they reach your infrastructure.
- Analyze and track user activity on your website and mobile applications
- prioritize and control access to your website by routing users to different pages.
AWS Fargate: AWS Fargate is a serverless compute engine for containers that work with Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS). Fargate allows you to focus on building your applications when you let Fargate provision and manage the infrastructure required where you manage everything at the container level.
Some major AWS clients like Vanguard, Accenture, Foursquare and Ancestry have selected Fargate to run their mission-critical applications.
Few Use Cases:
- With Fargate, you only need to pay for the resources that you have defined in your tasks.
- For the tasks that have peaks in memory and/or CPU usage.
- Tasks that will run on-demand or on a schedule and don’t need a dedicated EC2 instance.
Amazon API Gateway: Amazon API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale. An API allows software programs to communicate, making them more functional. An AWS user creates, manages and maintains APIs within the Amazon API Gateway.
With Amazon API Gateway, a developer can connect with services such as:
- AWS Elastic Beanstalk
- Elastic Compute Cloud instances
- AWS Lambda event-driven code and
- AWS Step Functions state machines.
AWS Step Functions: AWS Step Functions: AWS Step Functions is a Serverless Application Integration service. Using AWS Step Functions you can build complicated workflows by orchestrating multiple AWS services like Lambda, ECS, Fargate, Batch, DynamoDB, SNS, SQS, SageMaker, EventBridge, EMR, etc.
The AWS Step Functions’ Standard execution provides visualization for the workflow executions allowing you to visually look at your business process, similar to a flowchart. The AWS Step Function Workflow Studio is a visual workflow designer tool announced recently, easing the process of creating workflows.
Some of the use cases are microservice orchestration, ETL pipelines, media transcoding, automation, etc.
Amazon EventBridge: EventBridge is a serverless event bus designed to help you address some of the common architectural pitfalls of distributed systems, and also help simplify your serverless systems architecture.
EventBridge delivers a stream of real-time data from event sources such as Zendesk or Shopify to targets like AWS Lambda and other SaaS applications.
Few Use Cases:
- EventBridge’s flexibility and its vast integration set makes it even easier to adapt the service to a wide variety of use cases
- Helps you to create workflow automation processes connected to customer service and sales activities.
Amazon DynamoDB: Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale. A fully managed scalable key-value and document database on the Amazon Web Service (AWS) cloud best suited for high-performance queries on extremely large datasets. DynamoDB can handle more than 10 trillion requests/day and can support peaks of more than 20 million requests per second.
Amazon Aurora Serverless: Amazon Aurora Serverless is an on-demand, auto-scaling configuration for Amazon Aurora. Aurora Serverless is built upon Amazon Aurora, which is a “built for the cloud” relational database supporting both MySQL and PostgreSQL. There are no “servers” deployed in your infrastructure and no database capacity for you to monitor and manage.
Amazon RDS Proxy: AWS Relational Database Service (RDS) is a managed database service that was launched almost a decade ago. Many applications, including those built on modern serverless architectures, can have many open connections to the database server and may open and close database connections at a high rate, exhausting database memory and compute resources.
RDS proxy is currently available for Aurora MySQL, Aurora PostgreSQL, RDS MySQL and RDS PostgreSQL.
Amazon Simple Storage Service: Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance. This means customers of all sizes and industries can use it to store and protect any amount of data for a range of use cases, such as data lakes, websites, mobile applications, backup and restore, archive, enterprise applications, IoT devices, and big data analytics.
Amazon Elasticsearch: is a fully managed service that makes it easy for you to deploy, secure, and run Elasticsearch cost-effectively at scale. Elasticsearch is used for the analytic purpose and searching your logs and data in general. The service provides support for open-source Elasticsearch APIs, managed Kibana, integration with Logstash & other AWS services, and built-in alerting and SQL querying.
Messaging and Streaming
Amazon Simple Notification Service: SNS provides developers with the highly scalable, cost-effective, and flexible capability to publish messages from an application and sends them to other applications. The A2A pub/sub functionality provides topics for high-throughput, push-based, many-to-many messaging between distributed systems, microservices, and event-driven serverless applications.
Amazon Simple Queue Service: SQS is a distributed queue system that enables web service applications to quickly and reliably queue messages that one component in the application generates to be consumed by another component where a queue is a temporary repository for messages that are awaiting processing. SQS eliminates the complexity and overhead associated with managing and operating message-oriented middleware and empowers developers to differentiate work.
Amazon Kinesis Data Streams: Amazon Kinesis Data Streams (KDS) is a massively scalable and durable real-time data streaming service. KDS makes it easy to analyze load streaming data and also provides the ability for you to build custom applications based on your business model and needs. KDS can continuously capture gigs of data per second from hundreds of thousands of sources such as website clickstreams, database event streams, financial transactions, social media feeds, IT logs, and location-tracking events.
Amazon Kinesis Data Firehose: Amazon Kinesis Data Firehose is the easiest way to reliably load streaming data into data lakes, data stores, and analytics services. Firehose is used to capture and load streaming data into other Amazon services such as S3 and Redshift. Firehose will automatically scale to meet demand, which is in contrast to Kinesis Streams, for which you must manually provision.
Amazon AppSync: Organizations choose to build APIs with GraphQL because it helps them develop applications faster by giving front-end developers the ability to securely access, manipulate, and combine data from one or more data sources.
User and Identity management
Amazon Cognito: Amazon Cognito provides a complete solution for user authentication. The main features are storing usernames and passwords, managing sessions, and providing forgotten password functionality. All you need to do is integrate with its endpoints. Amazon Cognito scales to millions of users and supports sign-in with social identity providers, such as Apple, Facebook, Google, Amazon, and enterprise identity providers via SAML 2.0 and OpenID Connect.
Amazon Identity and Access Management: AWS IAM enables you to securely control access to AWS services and resources for your users. Using IAM, you can create and manage AWS users and groups and use permissions to allow and deny their access to AWS resources.
Delivery at the Edge
Amazon CloudFront: Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds, all within a developer-friendly environment. CloudFront provides low latency by caching and delivering content from a global network of edge locations located nearest to the user
Amazon Kinesis Data Analytics: Amazon Kinesis Data Analytics is the easiest way to transform and analyze streaming data in real-time with Apache Flink. It increases significant bits of knowledge, and reacts to your business and client needs continuously.
Amazon Athena: A serverless query service that makes it easy to analyze data directly in Amazon Simple Storage Service (Amazon S3) using standard SQL. There is no infrastructure to manage, and you pay only for the queries you run. With Athena, there’s no need for complex ETL jobs to prepare your data for analysis.
Provisioning and Monitoring
AWS Amplify: AWS amplify makes work easier for mobile & web app developers to deploy & configure our backend in cloud servers. Applications, powered by AWS. With Amplify, you can configure app backends, connect your app in minutes, deploy static web apps in a few clicks, and easily manage app content outside the AWS console.
AWS Amplify is developed with 3 easy steps:
AWS CloudWatch: Amazon CloudWatch is an AWS monitoring and management service which is designed for the purpose of maintaining the services and resources which are used. Focusing mainly on developers, site reliability engineers, IT managers and similar roles. CloudWatch provides you with data and actionable insights to monitor your applications, respond to system-wide performance changes, optimize resource utilization, and get a unified view of operational health.
AWS X-Ray: AWS X-Ray helps developers analyze and debug production, distributed applications, such as those built using a microservices architecture. X-Ray has the ability to trace all end to end requests, record representative samples for the traces and display maps of the trace data which can then be used to analyse errors and performance affecting issues.
AWS CodeBuild: AWS CodeBuild is a fully managed CI tool that lets you compile source code, run tests, and produce packages that are ready to deploy.
AWS CodeCommit: AWS CodeCommit is a secure, highly scalable, managed source control service that hosts private Git repositories. CodeCommit eliminates the need to operate your own source control system or worry about scaling its infrastructure.
AWS CodeDeploy: AWS CodeDeploy is a fully managed deployment service that automates software deployments to various compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers. CodeDeploy helps maximize your application availability by performing rolling updates across EC2 instances and health of applications.
AWS CodePipeline: AWS CodePipeline is a fully managed continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. It offers a continuous delivery service for fast and reliable application updates.
- Write fewer lines of code and make the best use of the services available. Code is debt, so reduce it as much as possible.
- In the public cloud world platform, it makes no sense to write code and run it within a VM. Rethink the architecture and accommodate managed or serverless services.
- Use events as are the source of truth.
- Share nothing.
- Be asynchronous as possible.
- Look for the statelessness approach.
- Design for failure.
A blog inspired by: https://www.youtube.com/watch?v=KERSWFvpv4M
Twitter profile: https://twitter.com/houlihan_rick
Hernan Garcia: https://www.linkedin.com/in/hernangarcia/