Microservices is the one of main architecture to building could-based solution. Here, it consists of combination of small distributed applications to build entire system. The application is a component which is isolated and well-developed. All dependencies of relevant application should be in independent from other component and belongs to particular component. The component and its dependencies are packaged in single container. Finally the container is deployed on platform infrastructure.
Scaling is the important factor on cloud based solution. The container can do major role for scaling as per resource demand. It is very difficult and complex operation to managing containers manually. But it is very important to manage financial cost less. There are some tools such docker swarm, mesophere and kunernetes for automate container orchestration. These tools can manage resources at scaling as per given configuration.
Serverless computing is the latest approach to cloud based solution for deployment. It is vendor specific. Azure function and AWS Lambda are major solutions provided by Microsoft and Amazon respectively. It is a function. The function is responsible for a very small task. It is an independent unit of deployment. It can communicate each other. The function is linked with Event. If event is triggered, function is activated.
Serverless provides to upload the component (bundled application) and executed. Here, vendor can handle automated horizontal scaling completely. It reduces the complexity of server management as scale from developer. In addition, It costs only resource usage.
Each component of microservices follows service-oriented architecture (SOA). The service provides the REST API access. It should be well-defined and documented properly. It is asynchronous. It .passes data in lightweight format JSON. Enterprise service busses can be used for intercommunication of each services.
Although microservices follows SOA, there is some differences between SOA and microservice. SOA performs the set of tasks and deployed on servers and VMs. Each component of microservices is responsible of specific task of whole system. It is deployed in container. Hence, a component of microservice is simple. Compared to whole microservice, it is very complex than SOA.
Cloud-native architecture is not just application architecture with direct involvement. It must have advantages of on-demand delivery, global deployment, elasticity and higher-level services. In addition, it must agility of development. So, system is updated in very productive manner with business expansion.
Cloud-native architecture affects three main factors.
Microsservices-oriented: Entire application are segregated into small items. A item is considered as single component. It is independent from other components. Components must have loosely coupled. It is responsible only for specific task.
Containerized: each service is packaged in container. It is independent and resource isolated.
Dynamically orchestrated: This manages containers to utilize resources effectively. It can scale up and down based on resource on-demand automatically.
Some venders have already provided the facility to cut down deployment process from developer. AWS Lambda and Azure Function provide the serverless computing. Developed application can be deployed in functions. It is a type container. It can manage dynamic orchestration also.