One way to achieve well designed microservice architecture is by using containers, but with them comes the complexity of managing your containers. There are options like Kubernetes to help you with that but that comes with its own management.
You can simply avoid all that by using serverless architecture for services. This is new concept that helps you deploy your small services and just forget about all the setup. AWS, Google and other cloud providers have these feature already. However every one of them support different level of it as it is yet new concept but AWS is leading in this.
In this you just upload your code or application as a function and expose it, do some configuration specific to that service and its up. If you follow proper documentation, and create each function providing a single functionality (as recommended) you will anyway be forced for some level of microservice architecture.
Along with your services/functions you will also need an api gateway setup that will resolve each service and delegate call to your function. This however can be resolved in two ways, client side or server side.
Client side api resolution or discovery is high complexity and suitable only for thin client but for any thick client managing and supporting versions upgrading client for changes becomes more tedious and not desirable.
Server side discovery is much more efficient and easy for changes and management.
In my opinion, cloud providers use containerization in the back to achieve the isolation, and efficiency but that is all hidden from you. For you it provides efficiency by not managing anything and cost effectiveness as your billing will be for the time your function is invoked.
You can simply avoid all that by using serverless architecture for services. This is new concept that helps you deploy your small services and just forget about all the setup. AWS, Google and other cloud providers have these feature already. However every one of them support different level of it as it is yet new concept but AWS is leading in this.
In this you just upload your code or application as a function and expose it, do some configuration specific to that service and its up. If you follow proper documentation, and create each function providing a single functionality (as recommended) you will anyway be forced for some level of microservice architecture.
Along with your services/functions you will also need an api gateway setup that will resolve each service and delegate call to your function. This however can be resolved in two ways, client side or server side.
Client side api resolution or discovery is high complexity and suitable only for thin client but for any thick client managing and supporting versions upgrading client for changes becomes more tedious and not desirable.
Server side discovery is much more efficient and easy for changes and management.
In my opinion, cloud providers use containerization in the back to achieve the isolation, and efficiency but that is all hidden from you. For you it provides efficiency by not managing anything and cost effectiveness as your billing will be for the time your function is invoked.
Comments
Post a Comment