00 Thought Construction How to Improve Serverless Capabilities Under the New Track

00 Thought Construction How to improve Serverless capabilities under the new track #

Hello, I am Jingyuan.

As Serverless development has reached its current state, most tech professionals have reached a consensus that Serverless will lead the next decade of cloud computing. As a technology developer, “Serverless” is probably not unfamiliar to you. You might have already unknowingly used it. However, its rapid development has also made it difficult for us to form a more comprehensive understanding of it.

In this class, let’s understand the past and present of Serverless, reshape the Serverless mindset, and choose a concrete form of Serverless as a starting point for further learning. Finally, I will discuss with you the various stages of “leveling up” in our subsequent learning, making our advancement goals clearer.

The New Track: Concrete Expression of Serverless #

In simple terms, Serverless is a concept of architectural design. It is not a specific programming framework, library, or tool. As people’s understanding of Serverless deepens, the terminology used also becomes more precise and concrete. From the previous translation of " **无服务器 (serverless)" to the current understanding of " 服务器无感知 (server-unaware)", it reflects the development and usage of Serverless over the years.

Let’s take a look at the development process of this new track from the beginning. Using Martin Fowler’s viewpoint, Serverless is a combination of FaaS and BaaS, and this clear and concise definition lays the foundation for the composition of Serverless.

While recognizing this concept, CNCF also made further improvements to the definition of Serverless architecture in its whitepaper V1.0. It states that Serverless Computing is building and running applications without the need for server management. It describes a more granular deployment model, where one or more function-based applications are packaged and uploaded to a Serverless platform, and then executed, scaled, and billed according to actual needs.

We can see that this description provides a more concrete expression from the perspective of execution paths and finer granularity.

In the latest cloud computing whitepaper released by the Research Institute of Telecommunications, published during the Cloud Native Industry Conference in July 2022, the description of Serverless mentions that “through various server-unaware technologies, infrastructure is abstracted into various out-of-the-box services, provided to users as callable API interfaces, truly achieving on-demand scalability and usage-based billing”. From the perspective of business and infrastructure service collaboration, it further highlights the features of Serverless.

I’ll stick to the words used in the whitepaper to reflect this concept and hope we can reach a consensus: “Serverless is a concept that separates business and infrastructure, enhancing users’ business innovation capabilities”.

Development Process: From Singularity to Plurality #

In addition to the concept, let’s talk about the process of the technological and application scene diversification in Serverless. Only by understanding the process of Serverless diversification can you build a more complete Serverless mindset.

Embryonic Stage #

The embryonic stage of Serverless can be traced back to 2006 when Fotango launched the PaaS platform Zimki, which introduced the concept of “pay-as-you-go, pay-as-you-use.” This laid the foundation for the core features of Serverless. In 2012, Ken, the VP of Iron.io, mentioned the term “Serverless” for the first time in his article “Why The Future of Software and Apps is Serverless.” This officially marked the entry of Serverless into the stage of history. We can consider this stage as the “embryonic stage” of Serverless development.

Growth Stage #

In 2014, AWS released its first Function-as-a-Service (FaaS) product, Lambda, in preview version, which was officially launched in 2015. Its usage skyrocketed, and subsequently, in 2016, IBM, Google, and Microsoft also released their FaaS products. Open-source projects such as OpenWhisk, Fission, Kubeless, and OpenFaaS also emerged during this period.

In 2017, the four major cloud service providers in China (Alibaba Cloud, Tencent Cloud, Huawei Cloud, and Baidu Cloud) successively released their FaaS products. In the same year, Azure released the first Serverless container, ACI, and AWS released the Serverless container service, Fargate.

It can be said that the enthusiasm for chasing and innovating in the field of Serverless is evident during this period. Products such as function computing, container instances, and container services emerged. The increasing attention to Serverless and Lambda can also be seen from the Google Trends chart below. We can consider this stage as the “growth stage” of Serverless.

Image

Maturity Stage #

In 2018, Huawei Cloud released the Serverless container service, CCI, and Alibaba Cloud released the Serverless application hosting service, SAE. In terms of open-source projects, Knative was released and became a CNCF incubating project in March 2022.

A year later, Alibaba Cloud, Google, and Tencent Cloud successively released Serverless container services. Until last year, major companies also released Serverless application hosting services, aiming to provide users with fully managed, maintenance-free, and highly elastic services. On one hand, these services can enable the migration of existing microservices applications to the cloud, and on the other hand, they can efficiently integrate and deliver applications. This period has pushed Serverless into a relatively “mature stage.”

It can be said that with the continuous development of Serverless technology and its value, major companies are competitively developing in this field. Although domestic companies started later, their catching up momentum is strong, and their current competitiveness can be compared with that of foreign giants.

Image

From the development process, we can also see that “starting from functions, the technology and products of Serverless gradually tend to be diversified.” Various forms complement each other to provide support for solving more complex and diverse business scenarios. These scenarios can be categorized into three types:

  • Function Compute (FaaS): Function-oriented: Users only need to focus on the code at the function level, which is used to solve lightweight, stateless, and time-sensitive tasks.
  • Serverless application hosting: Application-oriented: Users only need to focus more on the application itself, combining with microservices. It integrates application governance and observability, reducing the construction cost of new applications and the adaptation cost of old applications.
  • Serverless container services: Container-oriented: Without changing the current Kubernetes infrastructure, it eliminates the need to focus on individual nodes, greatly improving the resource preparation process in the early stages and reducing maintenance costs, making the lifecycle management of applications more efficient.

With the continuous extension of Serverless, the Serverless computing requires Backend-as-a-Service (BaaS) services to have matching hosting capabilities and extreme elasticity, providing complete support for constructing truly Serverless applications throughout the entire process.

Therefore, the “Serverless” we are discussing is no longer limited to the narrow sense of Function-as-a-Service. In a broader sense, the characteristics of Serverless should also be reflected in aspects such as Serverless DB, Serverless message queues, workflows, and toolchains. Nowadays, various companies have conducted research and released various products in the field of Serverless at the resource level, such as Amazon Aurora Serverless, PostgreSQL for Serverless, and PolarDB Serverless.

Image

In addition to the ongoing enrichment of its definition, the application scenarios of Serverless are also expanding rapidly. It is no longer limited to small programs, scheduled tasks, simple event triggers, and batch processing. Serverless can be seen everywhere in fields such as AI integration, large-scale data processing, IoT data processing, and microservices hosting on the cloud.

I am attaching a Serverless solution diagram from a standard book by China Academy of Information and Communications Technology (CAICT) to help you better understand the key points of Serverless and build a Serverless model and mindset at the beginning of the course.

Image

Focus: The Advanced Journey of Upgrading and Fighting Monsters #

Now that you have gained an understanding of the development, value, and architectural patterns of Serverless and have embraced its ideology, I believe you have already moved away from your previous impressions of this new track.

Serverless is diverse and complex. On one hand, it makes us look forward to its future development, but on the other hand, it does increase the difficulty of learning. So, how do we enter this new track and keep up with the development trends of cloud computing in the next decade?

As mentioned earlier, I don’t want you to learn a lot of concrete technologies in an all-encompassing manner, as that would only lead to a “mixed but impure, universal but not refined” understanding. My suggestion is to start with the FaaS (Function as a Service) form of Serverless. Why do I give this recommendation?

Firstly, Serverless is like Tai Chi, emphasizing “using intention rather than force”. However, learning “Tai Chi” also requires mastering martial arts moves in the early stages. Only when you have achieved mastery should you forget about forms and focus on spirit. Therefore, it is necessary to choose a concrete product to learn about Serverless in this new track.

Secondly, as one of the “elder” level products in the Serverless ideology, FaaS has been in development for eight years since the launch of AWS Lambda, and it has been followed by many vendors. Features such as custom runtimes, custom images, orchestration, and application centers are all built upon FaaS and have expanded its functionalities. Therefore, the FaaS form of Serverless is the best choice to start with.

So, how do we learn this “martial art” of Serverless FaaS? I have drawn a simple schematic diagram and will explain each level to you below.

  • Hello World

This level is the simplest. All you need to do is create a function using an account from any cloud vendor and get it running. This marks the first step in learning Serverless.

During the learning process, there is no need to worry about costs, as most cloud vendors provide free quotas. Just dive in and start practicing and using it.

  • Capability

To reach this level, you need to frequently browse the websites of cloud vendors, study their manuals, and read articles and materials from public accounts to gain knowledge.

Once you have completed this advanced stage, you will have a basic understanding of the features offered by a Serverless platform and be able to perform simple operations. You can also provide general pre-sales solutions. However, you still do not have strong development skills.

  • Able to Develop Simple Applications

At this stage, the focus shifts to development.

On one hand, you need to master a popular programming language such as Python, Golang, etc. On the other hand, you need to continuously follow case studies and the documentation provided by cloud vendors to adapt your code accordingly. Achieving these two aspects completes this level of advancement.

  • Able to Develop Complex Applications

Developers who reach this level must have a comprehensive understanding of various skills related to function computing. They know which strategies are best for different situations. Additionally, there will be some insights and sharing of experience in the community and from cloud vendors, so stay updated.

  • Able to Consolidate Common Capabilities

This level belongs to the highest level of business development. In simple terms, while developing your own business code, you are able to consolidate related libraries and layers that can be used by you, other colleagues, or other developers on the platform. This demonstrates your ability to abstract.

Before achieving this advanced level, you should already have the ability to write libraries and have learned about abstract thinking and design principles, with the conscious effort to execute them.

  • Metering and Billing

As a platform, metering and billing are indispensable. This level can be considered as the initial stage that platform developers with primary capabilities should strive to achieve.

You need to have prior knowledge of Kubernetes, Docker, architectural design, and middleware. Based on this foundation, you also need to systematically absorb real-world Serverless deployment cases and experiences to avoid pitfalls.

  • Platform Portability

This level belongs to the ultimate stage of platform development. The platform you develop can not only be used on your own cloud, but can also be deployed by private enterprises or exported in a componentized manner.

To achieve this level of advancement, my suggestion is to join a cloud-native Serverless team and spend more than 10,000 hours honing your skills. Solidify your understanding of every aspect, and over time, you will be able to stand out in this field.

Conclusion #

By now, you should have a different understanding of Serverless.

Serverless is a concept that enables the separation of business and infrastructure, enhancing users’ ability for business innovation. I have summarized a diagram for you, highlighting several core features that make up its form:

Physically, FaaS and BaaS compose the basic structure of Serverless, just like a car consists of a body and wheels. The operational form of Serverless is described through actions such as plug-and-play and API invocation, similar to the logic of starting an engine and stepping on the brakes for a car. Lastly, the core features of on-demand invocation and pay-as-you-go pricing reflect the “greatest selling point” of Serverless, much like the automatic driving and parking functions of a car.

After understanding all this, do you now have a more intimate understanding of Serverless?

Serverless has evolved to its current state, forming product forms centered around function computing, elastic applications, and container services, gradually becoming more generic and extensible, thus forming a complementary force that can meet more scenarios.

However, the establishment of Serverless thinking certainly doesn’t happen in an instant. In the coming years of its development, it will definitely become more generic, continue to integrate more ecosystems, and more forms of Serverless products will continue to emerge. What we need to do is “maintain an embrace change” mindset, grounding ourselves in the essence of Serverless, and understanding the technical principles and intentions behind the products.

In the following courses, I hope that you not only learn the theoretical knowledge mentioned in the article but also practice and participate actively in discussions and reflections through the practical exercises mentioned in the courses. Through the process of “learn-practice-summarize-express,” actively explore this continuously expanding technology.

With such learning, I believe you will be able to adapt and innovate, and truly achieve “effortless use.”

Thought-provoking Questions #

Did you encounter any difficulties when entering the field of Serverless? Please feel free to share, and let’s discuss solutions together.

Thank you for reading, and feel free to share this lesson with more friends for reading and discussion. See you in the next lecture.