Serverless on AWS
Tags: aws, serverless
Published: 2021-03-28 14:18:34

In recent years, the serverless computing model has emerged as a disruptive architectural approach for developing modern apps, utilities, and backend solutions. It helps developers to focus on code rather than spending time in the configuration, managing, or scaling of backend infrastructure.

###What is serverless
Serverless allows you to build and run applications without giving a thought about the server. The provisioning, administration, and scaling of the application server are all managed dynamically by the Serverless cloud provider.

There are two types of serverless computing models. The first type refers to web and mobile application which leverage the cloud services for managing the server-side logic. It is known as Backend-as-a-service(BaaS). 

The second type is Function-as-a-service(FaaS). In FaaS handling backend infrastructure such as containers, runtime environments. 

###Why use serverless
* No server management: Left the worries of provision or maintain any servers.
* Flexible scaling: Your application will scale automatically.
* Pay for value: Pay only for what you use rather than paying for the server unit.

###An overview of Serverless AWS services
AWS has more than 165 services that cover the major aspects and requirements of backend development like computing resources, security, Machine learning, messaging and monitoring services, databases of specific needs, and many more.

![Serverless AWS services](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j504ypwqdvhheexilss7.png)

####Compute

With [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) you can run code virtually any type of application or backend service - all with zero administration. You can execute code as a function triggers by various events like file update in S3 bucket, request on AWS API Gateway, operations on Dynamo DB table. AWS Lambda is a FaaS solution. You can combine Lambda with many other services of AWS and used it in many scenarios, like real-time file processing in S3, real-time stream processing, to handle the HTTP requests from API in mobile and web applications

With [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) you can run containers without having to manage servers and clusters. Fargate improves security through application isolation by design. You don’t need to optimize the server utilization, manage cluster scheduling. Fargate provides rich observability of applications with the help of Amazon CloudWatch Container Insights. To launch your application
Specify the CPU and memory requirements, define network and IAM policies.

####Messaging

[Amazon Simple Queue Service(SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications. Get started with SQS in minutes using the AWS console, Command Line Interface or SDK of your choice, and three simple commands. 

SQS offers two types of message queues. Standard queues offer maximum throughput, best-effort ordering, and at-least-once delivery, and FIFO queues are designed to guarantee that messages are processed exactly once, in the exact order that they are sent.

[Amazon Simple Notification Service (SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) is a fully managed messaging service for both application-to-application (A2A) and application-to-person (A2P) communication.

With the help of SNS, you can send messages directly to millions of users. Besides the push notification, you can deliver notifications by email, SMS, or HTTP endpoint.

####Integration

[Amazon API Gateway](https://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/welcome.html) is a fully managed service for creating, publishing, maintaining, monitoring, and secure APIs at any scale. You can create RESTful APIs and WebSocket APIs that enable real-time communication applications with the help of API Gateway.

API Gateway provides powerful, flexible authentication mechanisms, such as AWS Identity and Access Management policies, Lambda approver functions, and Amazon Cognito user pools.

With [AWS Step Function](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) you can orchestrate the sequence of AWS Lamdba functions and multiple AWS services into business-critical applications. Step Functions is based on a state machine. A task is a state in a workflow that represents the single component of the application.
All tasks are automatically triggered, tracked, and retried if an error came up. So that application executes smoothly.

####Security

[Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) is a fully managed and cost-efficient sign-up/sign-in service, which provides users authentication, authorization, and management for web and mobile applications. The two main components of Amazon Cognito are user pools and identity pools. User pools are user directories that provide sign-up and sign-in options for your app users. Identity pools enable you to grant your users access to other AWS services. You can use identity pools and user pools separately or together.

With Amazon Cognito, users can sign in through social identity providers such as Google, Facebook and through enterprise identity providers such as SAML and OpenID Connet.

[AWS Key Management Service (KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) is a fully-managed service that allows you to create and manage cryptographic keys and control their use across your application and AWS services. AWS KMS is integrated with most other AWS services that encrypt your data for security. AWS KMS customer master keys (CMKs) controls access to data encryption. 

By using AWS KMS, you gain more control over access to data you encrypt. You can use the key management and encryption feature directly in your application.

####Monitoring

[Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) is a monitoring and observability service built for DevOps engineers, developers, site reliability engineers (SREs), and IT managers. CloudWatch provides the matrics about every AWS service you use. You will get the data and actionable insights to monitor your applications, respond to system-wide performance changes, optimize resource utilization and operational health. 

[Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) is a scalable, serverless, embeddable, machine learning-powered business intelligence (BI) service built for the cloud. QuickSight provides AWS data, third-party data, big data, spreadsheet data, SaaS data, B2B data, and more on a single dashboard. You can embed it with your applications, portals, or websites to receive your own self-service analytics. 

####Database

[Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) is a fully managed NoSQL database that supports key-value and document structure. DynamoDB lets you offload the administrative burdens of operating and scaling so that you don't have to worry about hardware provisioning, setup, and configuration, replication, software patching, or cluster scaling. It has single-digit millisecond latency. DynamoDB is a great choice for many serverless applications on AWS. It goes hand in hand with other AWS services.

[Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) is a fully managed relational database engine that's compatible with MySQL and PostgreSQL. Amazon Aurora is up to five times faster than standard MySQL databases and three times faster than standard PostgreSQL databases. It automates and standardizes database clustering and replication which are the most challenging aspects of the database. Aurora is also available in an on-demand autoscaling configuration which is called Amazon [Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html).


####Analytics

[Amazon Kinesis](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) is a fully managed and data stream service to collect and process large streams of data records in real-time. With Amazon Kinesis, you can ingest real-time data such as video, audio, application logs, website clickstreams, and IoT telemetry data for machine learning, analytics, and other applications.

[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) is an interactive query service with the help of standard  SQL it analyzes data directly in Amazon Simple Storage Service(Amazon S3). there is no infrastructure to set up or manage, and you pay only for the queries you run. Athena can run queries in parallel so results are fast even with a large dataset.

####Conclusion
AWS provides many services which can be used for building applications with any workload. Developers and solution architects have a huge range of tools to implement backend applications in an effective way. Important aspects like high availability, automatic scalability, security, and durability are built-in. With the pay-as-you-use pricing model, the upfront cost is zero and there is no binding. Which makes serverless architectures very cost-effective.

Thank you for reading. Signing off 🙌.

####Feel free to reach out 👇

>GitHub: https://github.com/Push9828
Twitter: https://twitter.com/PushkarThakur28
LinkedIn: www.linkedin.com/in/pushkarthakur28