Exploring the beauty of technology and knowing how it can be built on the cloud

2022-11-06 15:30:00
InfoQ
Source
Translated 787
Summary : The development of computer hardware and software as the basic platform for technology building is also a journey of pursuing the beauty of technology through abstraction. This contains the inner logic of making development easier and more efficient, as well as the elements and methods of free building, which I believe can provide developers with some new inspiration.

Image Source: Theodore

When we talk about technology, people rarely associate it with beauty, but when we do as so, well, the magic will happen.


One of the first to connect technology and beauty was Donald Knuth, author of the book The Art of Computer Programming, who found that technology and art have something in common. He says, "Computer programming is an art. A programmer who subconsciously sees himself as an artist will love what he does and will do it better."


At the recent DEV DAY of Amazon CloudTech China Summit, we witnessed the beauty of technology in the cloud era again. Developing computer hardware and software as the basic platform for technology building is also a journey of pursuing the beauty of technology through abstraction. This contains the inner logic of making development easier and more efficient, as well as the elements and methods of free building, which I believe can provide developers with some new inspiration.

I. How to understand the beauty of technology?

Image Source: The Valuable Dev

In The Art of Computer Programming, Goldner mentioned that the psychological characteristics of a programmer are mainly the ability to switch between different levels of abstraction, from low to high level, to be able to look at the small details and also the whole. As you can see, abstraction is a key ability that developers need.


How to define abstraction, UCCA Ullens Center for Contemporary Art Deputy Director and UCCA Group Art Director You Yang try to cover abstraction with three keywords. Firstly, Context abstraction originates from a certain origin and cannot be separated from the context of historical tracing. Secondly, Technical, when creating abstract works, it is difficult for artists to complete their works without the support of science and technology, computer technology. Thirdly, Symbiosis and abstraction cannot be separated from the audience, and the artist's conceptual path will reflect us as the audience.


Referring to the technical field, it is easy to notice that art and technology have something in common regarding abstraction. The development of programming languages is a practical example of the beauty of technology achieved through continuous abstraction.


In the 1980s, the C language was used and developed to support the writing of most operating systems, which is the essential foundation for our continued abstraction. In the 1990s, the Internet changed rapidly, and the need for higher-level abstraction led to the emergence of interpreted high-level languages around the Web. The mobile Internet era saw the emergence of GO languages, Rust languages, and a host of new languages for big data and machine learning, with simpler and more efficient programming languages being the goal at this stage.


In essence, however, programming languages are still a way for developers to change the expression of the world, and abstraction makes that expression more precise and tangible. 2008 Turing Award winner Barbara Liskov suggested that what we want from abstraction is a mechanism that allows for expressing relevant details and suppressing irrelevant details. After the idea of object-oriented programming became a consensus, Liskov's research ventured into network computing, focusing on the abstraction of expressions. At this time, Liskov must not have imagined that the expression object was about to undergo a radical change.

II. What is Amazon Cloud Technologies doing right in the development revolution of the cloud-native era?

From the LAN to the Internet, to the cloud era. As Moore's Law became popular, the industry evolved, and the pace of business grew faster, the object of developer expression gradually became the infrastructure on the cloud. At this point, complexity, cumbersomeness, and clunkiness emerge again in a higher dimension.

1. Build a simpler, freer, more efficient world on the cloud

On March 14, 2006, Amazon Web Services' first product, Amazon S3, was launched, along with Amazon EC2, a hosting web service, and SQS, a message queuing service. This abstracted storage, computation, and middleware into network services and provided them to developers as APIs. It provided developers with a basic platform for on-demand access to resources through a globally distributed architecture, which became known as the "cloud."

Amazon SQS Access Control Architecture

In 2011, Amazon Cloud Technologies released Amazon ElasticBeanstalk, which automates the deployment of load balancing, virtual machine instances, and database instances, hiding the complexity of the underlying cluster. As the software abstraction level continues to increase, architecture building is changing dramatically - containerization has become the mainstream of cloud building. In 2014, Amazon Cloud Technologies released Amazon ECS, a container service. At that time, Kubernetes had not become popular, and Amazon Cloud Technologies chose to build its framework to manage Docker containers. Later, Kubernetes gradually matured and became the first choice for many customers to manage containers. Amazon Cloud Technologies embraced the open-source community and released Amazon EKS and a hosted Kubernetes service. Amazon Fargate, released in 2017, went one step further, fully hosting the container clusters running server nodes, providing the ability to deploy on-demand and automatically scale based on container granularity, allowing user concerns about compute units to be fully abstracted to the container level.


In addition to the release of Amazon ECS, we also saw the release of another service that sparked countless concerns in the technology community, Amazon Lambda, in 2014. it turns out that Amazon CloudTech's commitment to Serverless and its predictions were not wrong. Today, serverless computing has become the consensus of the cloud-native era, dramatically enhancing the technical aesthetics of cloud-native.


Cai Chao, VP of Technology & Chief Architect at Mobvista and Data Hero at Amazon Cloud Technologies, mentioned that they chose to migrate to a serverless architecture for the group's game data analysis statistics system, leveraging Amazon Lambda to simplify development, increase iteration speed, and reduce maintenance costs by 50%.


After 16 years of growth, Amazon Cloud Technologies has grown from 3 to over 200 services. In the journey of technology abstraction and development lies a logic very similar to that of art - built based on real needs. Even as the computing environment continues to be abstract, developers still need to manage databases, big data, machine learning, and many other service categories, addressing the automation of all aspects of the resource lifecycle. Resource management code was born.

Amazon Cloud Control API

Amazon CloudTech's services all offer Restful APIs, and in 2011 Amazon CloudTech released Amazon CloudFormation, which supports JSON code in declarative format for customers to describe resources on the cloud, and later in YAML format. By 2019, Amazon CloudTech had released command line, IDE tools, and SDKs to further abstract API operations, allowing developers to use more familiar shell scripts, IDE-integrated development environments, and programming languages to manage resources on the cloud, and a major release of Amazon CDK, allowing developers to use command-based programming to write managed code. Last year, Amazon Cloud Technologies released the Amazon Cloud Control API, which allows developers to manage third-party services from Amazon Cloud Technologies and partners using a custom API. It is worth mentioning that the emergence of Amazon CDK is like the rebirth of object-oriented resource management, bringing huge efficiency gains and milestones. At this point, programming friendliness for cloud resource management has reached a whole new level, and the achievement of continuous abstraction is the best expression of the beauty of technology in the journey of cloud resource management.

2. Achievement of freedom to build with the beauty of technology

In the cloud-native era, Amazon Cloud Technologies has explored the path to achieve the beauty of technology through continuous abstraction. However, how can technology's beauty help developers build their business systems more freely and conveniently in the future? Dai Wen, Director of Solution Architecture, Greater China, Amazon Cloud Technologies, summarizes it into three aspects: the beauty of exemplary architecture, the beauty of component abstraction, and the beauty of process agility.


Before 2001, Amazon.com used a monolithic architecture, soon encountering a bottleneck in business growth. In 2002, Amazon started transforming its microservice architecture, involving technology, process, organization, and other aspects. As of 2020, Amazon has 100,000 microservices running within its e-commerce. With the rise of microservices, the modular service design methodology hexagonal architecture related to Domain-Driven Design has been widely used. In this architecture, the code logic of any service is oriented towards a specific domain and provides a server-side interface to the outside world. At last year's re: Invent, Amazon's CTO Werner Vogels also shared six best practices for designing APIs at Amazon.

  • The API is always there.
  • Never break backward compatibility.
  • Work backward from customer scenarios.
  • Create APIs with explicit and documented failure modes.
  • Create self-describing APIs that serve a clear purpose.
  • Avoid leaking implementation details at all costs.

Today, the architecture of cloud-native applications leverages on-demand delivery, global deployment, elasticity, and higher-level cloud services to greatly improve developer productivity, business agility, scalability, availability, resource utilization, and cost optimization. According to Diebold, cloud-native is a relative concept, as cloud services are inherently evolving. At a point in time, choosing the right components becomes the most fundamental step in landing a cloud-native architecture.


After years of development, Amazon Cloud Technologies has provided the appropriate service support at the virtual machine, container, and serverless levels. The computing power at these three levels of abstraction has penetrated each service category. Nowadays, developers can not only choose the abstraction level of the runtime environment where the application code is located but also choose the abstraction level of the cloud resources that need to be invoked according to the business scenario so that the application code and cloud services at different abstraction levels can invoke each other without any hindrance, thus truly realizing the freedom to build.


With good architecture and suitable components, the flexible development process allows the application to be landed smoothly. In the build phase, it is very important to build and validate the architecture and deliver MVP quickly. The key to the governance phase is maintaining good observability to manage data and apply security policies on time. After the application is landed, it enters into a continuous iteration phase, where automated deployment, more component servitization, and automation and the intelligent transformation of operation and maintenance are the core. Throughout the journey, Amazon Cloud Technology provides a series of services and tools to help developers flexibly and dynamically realize the development process so that the beauty of technology does not just stay in the exploration and design phase but throughout the entire life cycle of the application.

III. Let's grow together with developers in the future

Image Source: Apideck

Technical abstraction and free building make software development more convenient, and open source makes technical capabilities popular. Today's modern applications are heavily populated with open-source services. Amazon Cloud Technologies has continued to accelerate the build and operation of enterprises on modern applications through hosted open-source services in recent years.


"Our three pillars of open source come from the community, the code, and the culture. This culture of Amazon itself gives a lot of guidance to the open-source community. Our employees and users are constantly contributing their code in the community, turning some of their experience and practices into shared resources that can accelerate iteration and updates for other customers." Chen Zhanling, director of modern application services products at Amazon Cloud Technologies. As you can see, developer community building is something that Amazon Cloud Technologies has always been very concerned about.


So, what makes a successful developer community? In the opinion of Fan Guijun, Amazon Cloud Technologies Community Builder and Senior Architect of Juniper China Innovation Division, a developer community is a platform-based product with clear positioning, customer portrait, and the ability to solve customers' pain points needs. Therefore, A successful developer community is a professional, open and inclusive platform that can help developers realize their value, according to Li Xin, founder of Amazon Cloud Technology User Group Leader and Yongle Pickup. In terms of the value of the developer community for technology companies, Pan Juan, Co-founder & CTO of SphereEx and Hero of Amazon Cloud Technology, believes that the developer community is an important channel for a company to communicate directly with developers about its products. The positive feedback within the community can help the company clarify its product positioning, establish its technology brand, and help the company attract talented people.


In the early stage of industry development, some head companies also promoted technology implementation by constructing developer communities. Guo Yue, a senior developer operations expert at Amazon Cloud Technology, believes that the construction of developer communities has given these head companies a head start, taking on corporate responsibility and enhancing their brand image. "A technology company, through the developer community, can turn this behavior of product and people, company and people communication, into a behavior of people and people communication, which I think will make a technology company look warmer."


A developer community that values the real demands of developers can have a long life. In the opinion of Luan Xiaofan, Partner and Technical Director of Zilliz and member of the Technical Advisory Committee of LF AI & Data Foundation, the first thing is to have a good service experience. The second thing is to have enough quality content and help build connections between developers. The last thing is to stimulate the generation of UGC content through rules so potential developers can stay in the community. Finally, we need to incentivize the generation of UGC content through rules so potential developers can stay in the community and truly become part of the community ecology. Pan Juan, on the other hand, believes that localization is one of the things that the developer community needs to focus on. According to her observation, foreign developers focus more on building their own open-source experience and see it as their quality ability. In contrast, domestic developers participate in open-source topics more out of interest. In Pan Juan's opinion, a good localized culture can more gently attract developers to the community.

Write a Comment
Comment will be posted after it is reviewed.