Kubernetes and serverless architecture (AWS – Lambdas, Azure Functions, and Google Functions, etc.) offers powerful platforms and tremendous boosts in agility, scalability and computing performance. Serverless architectures are often referenced as Functions as a Service (FaaS). Kubernetes offers advantages that serverless alternatives do not have — and vice versa. The key to the successful deployment of either alternative is to know when and how to decide the best fit.
As with any deployment model, there are trade-offs between cost, performance, and manageability that need to be taken into consideration. Application deployment has been on a steady trajectory towards smaller, more manageable, more cost-effective and developer friendly architectures. You might conclude that serverless is the logical conclusion of the abstraction. Not all applications can be delivered in FaaS, either for reasons of persistence or scalability.
Advantages
Kubernetes
Deployments at enormous scales and available with major cloud providers.
Containerized applications are still traditional applications just divided into many smaller parts or services.
Some applications will always require the ability to persist data and state while an application is running, and this is not something that Serverless architectures are particularly designed for.
Serverless
All major cloud providers offer this development/deployment structure.
Event-driven “code snippets” or transactions invoke a server instance that can spawn instances in milliseconds.
Less complexity and configuration headaches than Kubernetes but do require an event-driven architecture.
Scaling is faster than Kubernetes, except possibly when the first serverless instance is invoked. The more a serverless application is accessed, the larger it scales.
Lends itself to Agile development when Developers can push code in smaller pieces more rapidly into production without configuration and management overhead, leading to increased productivity.
Disadvantages
Kubernetes
Scaling is not instantaneous; must wait for a container to come online.
According to the CNCF, storage, security and networking issues remain top concerns for those deploying their architectures via Kubernetes.
You can scale them down to single instances, but they will still be there and still be costing money.
Serverless
May suffer from increased latency in cases where either a runtime — like Java — or the underlying container, is brought up to service an infrequently used request. This additional latency may or may not be acceptable.
Security pain points exist between hand-offs from serverless to next process.
Costs come into play when the FaaS is invoked and there is usually a tiered pricing structure. If there are no requests for any of its functions, costs can drop to zero
Management and performance tools may need some major retooling.
Comments