AWS SERVERLESS AS MICROSERVICE
Tags: aws, community, communitybuilder
Published: 2022-07-22 09:29:00

- **AWS SERVERLESS ARCHITECTURE**
In AWS, we can build and run applications and services without having to manage infrastructure. This means that your application runs on AWS server rather than yours. You don't need to do much such as provisioning, scaling, and maintaining any servers to run your applications, databases, and storage systems, AWS manages all of that for you making everything so easy for you. You as a developer just need to focus on writing the  code needed to run the application. AWS has what is called "Function As A Service" which is a compute platform for serverless to run your functions.  Lambda is an example of "Function As A Service". You don't need to configure or maintain servers only pay for the amount of time your code runs on the server. Serverless Functions makes servers so much easier to manage.

**Types of Serverless** 
Backend-as -a -Service (BaaS):This is a cloud-computing model where you outsource computing activities, such as hosting or data storage. 
Function-as-a-Service (FaaS):  These are units of logic that get incorporated and executed in response to configured events, like HTTP requests.

**REASON FOR SERVERLESS**
Serverless is very important for any developer because it gives the developer time to concentrate more on writing the codes which he needs for running his business. The developer doesn't need to be concerned about the configuration and management of servers. So that the developer will have time to create products for clients and run his business with ease. It helps scale infrastructure and  can adjust quickly with business demands.  

**WHAT ARE MICROSERVICESS?**
According to AWS, Microservices are an architectural and organizational approach to software development where software is composed of small independent services that communicate over well-defined APIs. These services are owned by small, self-contained teams. It takes every application function and puts it in its on service that runs in a container. It is a pattern for organizing computer systems into services that can scale with demand. This means that programmers can use different development tools for every function and are not limited by only one programming language. On the plus side, each microservice can be developed and scaled separately, which helps to improve  programmers performance. 

**REASONS FOR USING MICROSERVICES**
microservices can easily scale up the development cycles and can do that separately per component.
It can be deployed independently and can update easily incase if the code doesn't work since every microservice runs on its own.
Programmers understand the code because of its simplicity and independence.
These microservices are often owned and run  by small autonomous teams makes it easy for  every team to works at its own pace independently of one another.
Microservices has reusable functionality, since it runs as separate peace of code, it can be used in multiple products. Meaning you can write a code to be used for a function and still use it for another feature.
Because the microservices are loosely coupled, it increase the applications resistance to failure.

**Types of Microservices** 
Stateless Microservices: This type of microservices is the type which never keeps any existing data with it. 

Stateful Microservices: This type of microservice can maintain a record in a database which making it easier for the developer to program with it very efficiently.

**AWS SERVERLESS MICROSERVICES FOR CLOUD COMPUTING**
Serverless Functions can be a great deployment model for Microservices because they offer the fastest way to production, the lowest cost, and  very high elasticity.
Serverless microservices are cloud-based services which makes use of serverless functions to perform very high and specific roles within an application. Serverless functions can also be easily combined with a range of managed services, which reduces the overhead that is often associated with other microservice execution. At the launch of a new app it may be convenient to choose  Serverless Functions, since they are really fast to create and needs very little upfront investment.
AWS is Suited for Serverless Microservices because it offers a wide range of solutions that assist deploying microservices-based software. WHICH includes SDK packages as well as PaaS, SaaS, and IaaS solutions.
An example of an  offer by AWS to a host of services which aids Serverless Microservices architecture is Amazon Lambda.
 
**AWS LAMBDA AS A MICROSERVICE**
Amazon Lambda: AWS Lambda is a Serverless platform which runs code in response to configured events, like HTTP requests and manages its computing resources while balancing the load. Lambda is firmly integrated with API Gateway. API Gateway makes synchronous calls to Lambda making the application function as serverless. AWS Lambda is a service that allows you to run your functions in the AWS cloud Server eliminating the operational complexity for you and your team. You write and upload your code to Lambda, and it takes care of everything needed to run and manage the execution of your codes. Lambda supports several programming languages, so you can choose the most suitable for your code to run.
It integrates with the API gateway, allows you to invoke functions with the API calls, and makes your architecture completely Serverless. With AWS Lambda, you upload your code and let Lambda take care of everything required to run and scale the implementation to meet your actual demand curve with high availability. Lambda can be invoked from other AWS services or be called directly from any web or mobile application. In microservices architecture, each of the application components is loosely coupled, deployed and ran independently. An API created with Amazon API Gateway, and then AWS Lambda-initiated functions is all you need to build a microservice.

**BENEFITS OF SERVERLESS MICROSERVICES**
Serverless microservices has serverless architecture obviously, it has less overhead cost, improved cost efficiency, you and your team can easily combine serverless functions with other managed services. Functions can be integrated with databases, message queues, and API management tools in similar ways for different use cases making your code reusable for other functions as well. This helps in reducing the amount of initial code that you have to write as you scale out your application.

Serverless microservices are a good fit for complex, advancing applications, as their modularity makes them able to manage and scale up easily. Both microservices and serverless architecture follow the same structural principles. They both resist traditional, monolithic development approaches, prioritizing scalability, and flexibility instead. Amazon API Gateway provides programmatically generated client SDKs in a number of popular programming languages to lower integration overhead. 

**SHORTCOMING OF SERVERLESS MICROSERVICES**
Teams may find it challenging to define the scope of each function within their microservices. 

Repeated overhead for creating each new microservice to be created by the team.

Problems of optimizing server density and usage of resources

Complexity of running multiple versions of multiple microservices at the same time.

client-side code requirements to integrate with many services same time.