• Works flawlessly for I/O-bound applications Cons • Subject to Global Interpreter Lock • Context switching overhead • Code prone to race conditions • Does not work for CPU-bound tasks
processors & cores • GIL limitations don’t apply • Synchronization primitives like locks are mandatory unless sharing data • Works well for CPU-bound tasks Cons • Sharing data between processes is a little bit complicated • Bulky memory footprint • Definite scaling
interface • Can scale based on workload Cons • Layer on top of VM’s - Slow to scale up/down • Autoscaling is not a core functionality • Needs dedicated time to manage
hurdle • Decoupling between function provisioning and invocation • Size of execution environment Inherent to Serverless • Cold start issues • Additional Network Overhead • Not suitable for long running workloads • Troubleshooting is hard • Local testing