There has been a rapid rise in serverless computing, and with it, demand for skilled professionals who can make it work for their enterprises. Architecture is destiny, so the ability to design and roadmap an enterprise's serverless journey is a critical skill needed now. Two recent posts from seasoned practitioners provide insights into what it takes to develop a well-functioning serverless environment.
In a recent post, Wisen Tanasa, lead developer with ThoughtWorks, discusses the essentials of serverless architecture. These are the traits that ensure serverless success:
Low barrier to entry: "It's relatively straightforward to start getting your code running in a serverless architecture," Tanasa says. "You can follow any tutorial to get started and get your code running in a production-grade ecosystem."
Stateless: "Functions as a Service, or FaaS, is ephemeral, hence you can't store anything in memory because the compute containers running your code will automatically be created and destroyed by your platform. Stateless is, therefore, a trait in a serverless architecture."
Elastic: "Most serverless services that you use are designed to be highly elastic, where you'd be able to scale from zero to the maximum allowed, then back to zero, mostly being managed automatically. Elasticity is a trait of serverless architecture."
Distributed: "Once you embrace FaaS more, you'll also discover that your deployment units, the functions, are smaller than you may be used to. As a result, serverless architecture is distributed by default — and there are many components that you have to integrate with via the network. Your architecture will also consist of wiring together services, like authentication, database, distributed queue, and so on."
Event-driven: "Many of the BaaS provided by your serverless platform will naturally support events. This is a good strategy for third-party services to provide extensibility to their users, as you won't have any control over the code of their services. As you'll be utilizing a lot of BaaS in your serverless architecture, your architecture is event-driven by trait."
Along with the traits of serverless systems, there are specific skills that budding serverless architects should have. Justin Pirtle, specialist solutions architect at Amazon Web Services, recently described the skills it takes to master serverless architecture.(In his post, he also points to relevant AWS resources:)
Understand API and microservices design. "With the move to microservices-based architectures, decomposing monolithlic applications and decoupling dependencies is more important than ever," Pirtle says.
Learn event-driven architectures and asynchronous messaging patterns. "When building event-driven architectures, whether you're looking for simple queuing and message buffering or a more intricate event-based choreography pattern, it's valuable to learn about the mechanisms to enable asynchronous messaging and integration," Pirtle points out.
Grasp workflow orchestration in a distributed microservices environment. "In distributed microservices architectures, you must design coordinated transactions in different ways than traditional database-based ACID transactions, which are typically implemented using a monolithic relational database," he explains. "Instead, you must implement coordinated sequenced invocations across services along with rollback and retry mechanisms."
Understand serverless deployment automation and CI/CD patterns: "When dealing with a large number of microservices or smaller components, it's critical to integrate automation and code management into your application early on to efficiently create, deploy, and version your serverless architectures."
Assess serverless security, identity management, authentication, and authorization. "Plan for and integrate identity management into their applications while implementing robust authentication and authorization functionality. Other areas to secure in a serverless application include: Input and request validation; dependency and vulnerability management; secure secrets storage and retrieval; IAM execution roles and invocation policies; data encryption at-rest/in-transit; metering and throttling access; and regulatory compliance concerns."
Become familiar with application observability with comprehensive logging, metrics, and tracing: "Before taking your application to production, ensure your application is fully observable, both at a microservice or component level, as well as overall through comprehensive logging, metrics at various granularity, and tracing to understand distributed system performance and end user experiences end-to-end."