This page looks best with JavaScript enabled

Output as a Service

 ·  β˜• 5 min read

1. IT Infrastructure Is Undergoing Drastic Change

Traditional enterprises are building more efficient business models on top of internet technology to strengthen their competitiveness in their industries. Lower R&D costs, faster product iteration, closer proximity to customers, better service quality… This whole set of changes will push the productivity and living standards of society as a whole onto a new level.

As the ToC internet dividend is exhausted, the ToB industrial internet undoubtedly holds enormous opportunity. But domestic commercial companies are not strongly inclined to pay for efficiency and do not trust public services, so for now ToB is not an easy business.

Beyond the impact the internet is having on entire industries, what I notice more as a practitioner is that internet infrastructure is undergoing drastic change. As the cloud services market share keeps concentrating around the giants, the era of the IT blue-collar worker may truly not be far off. The technical barrier to entry for the internet will fall further, standardized modes of production will emerge, and a large number of manual-labor positions will be created.

1.1 Cloud Services Have Replaced Operations

Traditional IT infrastructure is mainly hardware, network devices, OS, and so on. Engineers need to spend some effort learning how to use this hardware and software. Usually a large company has an operations team dedicated to service assurance. But operational skill is not innate β€” only after stepping on enough landmines does one grow enough. That is another portion of cost and risk on top of salaries.

The operations team is a thankless department: no credit, only hard work.

Then cloud services arrived. Need a server β€” just buy a cloud server; need a database β€” just buy a cloud database instance. That is far more convenient and cheaper than building a set yourself. At the same time, cloud services can provide better disaster tolerance and fault tolerance, elastic scaling, and better operational service.

1.2 Kubernetes Unlocked the Power of the Kernel

Cloud services are already widely recognized by industry and have generated enormous value. The development of cloud services owes a great deal to the advance of virtualization technology. But virtualization did not solve the problem of distributed scheduling.

The foundation of traditional software architecture is that one operating system runs on one host. Constrained by that understanding, a large number of engineers are needed to do optimization in order to keep up with growing business traffic. Distributing requests, allocating resources, isolating networks… On a single machine, all this work is done by the operating system. So why not install a system directly onto a cluster?

Kubernetes is exactly such a system. It can take over many hosts and schedule resources in a distributed way, while the user sees only one. We just define the process, and Kubernetes runs it automatically in a Pod.

1.3 Cloud Orchestration Makes Development Easier

Kubernetes solved the problem of resource management and scheduling, and combined with build tools like buildpack it can satisfy deployment needs very well.

In fact, when we deploy an application we also depend on a number of components, such as Nginx, Redis, other services, and so on. As part of the application, they need to be configured and managed.

Service orchestration provides the ability to assemble and configure services. But asking developers to write verbose YAML configuration is hard to accept. Recently I have seen some cloud providers start to support implementing SDN, service orchestration, and other features through graphical drag-and-drop, which undoubtedly lowers the barrier to entry considerably.

Cloud orchestration makes deployment enormously convenient, turning architectural solutions into commodities that are easy to circulate. The leading cloud providers are capable of delivering architectural solutions to small and medium-sized companies; what those companies need to do is choose a solution and deploy it with one click, rather than design a new architectural solution.

2. The Cloud Makes Building Applications Simpler

I previously wrote a blog post, How to build a Django automated deployment process with Jenkins, Docker, and GitLab
. Setting up such a simple automated process took me a day.

With cloud services, it takes only half an hour:

  • Cloud database, I chose TencentDB for MySQL
  • Cloud host, AWS one-year free host
  • Cloud orchestration, Daocloud stack

Step one, create a DevOps pipeline

First prepare a GitHub repository containing everything needed to build the image. Create a DevOps project in Daocloud, select the prepared repository, and build the image. (After creating the application, you can add a stage to publish the application to your own hosts.)

Step two, orchestrate the application

In the application platform, create a stack. Edit docker-compose.yml and use the image built in the previous step. Inject the database configuration into the application via environment variables.

Step three, commit code, build the image automatically, deploy the application

What follows is very simple. You just commit code, the DevOps pipeline is triggered automatically, and deployment and release happen automatically.

At this point the application is live. If you need multiple instances or deployment in multiple locations, you just add the corresponding atoms to the DevOps pipeline.

3. Output Is Cloud Service

Cloud services are in fact the output of domain capabilities. Every kind of service corresponds to a kind of solution, to a kind of capability being output.

The IaaS layer outputs the capability of virtualized hosts; the PaaS layer outputs the capability of managing the application lifecycle; the SaaS layer outputs the capability of application development.

Thinking about it this way, cloud services become very easy to understand. It is the same principle as the uncle who is good at making pancakes selling pancakes by the roadside β€” a passerby would never go and buy a whole set of pancake-making tools just because he is hungry. We simply need to aim at the domain we are good at and peddle solutions that have already been proven.

The entire software R&D lifecycle is fertile ground for cloud services to grow. There is Tapd for managing requirements and defects, cloud databases, GrowingIO for data operations, Sentry for exception monitoring, Datadog for logs…


WeChat Official Account
WRITTEN BY
WeChat Official Account