The most common questions I get from customers – whether it’s developers or executives – are aimed at understanding how Amazon can move so fast. They want to know about our corporate culture, our organizational structure, the internal tools we use, and the people we hire, just to name a few. Of course, there is no single answer here. What can be a challenge for one company may not be the same for another. But there is one thing I have found that is as close to the silver model as possible – the developers. More specifically, it’s about hiring the right kind of developers and then empowering them to do their best – build.
Interestingly, this opportunity for influence is where many companies struggle. Sometimes a company’s organizational structures or internal practices prevent developers from building, and there are non-technical levers that can help a company move faster. But sometimes the problems are more related to the technologies themselves and how they are implemented and managed throughout the company. Cloud-based construction is the obvious first step here, as it allows companies to try and deliver faster than they can on-site. In the cloud, developers are able to apply the best technology to their built solutions and can easily deploy a network-scale solution in a fraction of the time available elsewhere. But like the answer to the original question, the cloud itself is not always a silver bullet. When companies try to apply the same traditional thinking that they use in their local infrastructure to evaluate, deploy, and run applications in the cloud, they still may not be able to run at the speed they want. So what needs to change?
Today, I want to tell you more about our thinking on Amazon and how our developer, modern application development, and platform are our ability to move fast. If you want to run a faster business, let developers serve themselves. Let them innovate without having to ask permission. Use guardrails and platforms to help developers focus on the more valuable part of their work. Summarize unnecessary complexity, but give them meaningful choices.
A cloud curated by experts
We introduced AWS protons last year re: Invented by inventing just that – letting developers build, helping companies move faster and bring consistency to your AWS architectures. I am pleased to announce that AWS Proton is publicly available today.
AWS Proton is a fully managed application deployment tool that focuses on enabling experts to standardize, monitor, and manage application deployment in their organizations.
Proton’s goal is simple: customers need to be able to adopt, adapt, and develop best practices and technologies to deliver their modern applications to the cloud, and they don’t have to worry about how they publish this – possibly to thousands of developers – in their organization. Experts need to be able to select the best cloud resources, deployment tools, and distribution mechanisms for a company, trusting that they will be deployed effectively in the organization without slowing down developers.
Modern application development
In AWS, we often talk modern applications, and Proton is a game changer in the development of truly modern applications. At its core, modern application development means leveraging technologies and delivery paradigms that allow developers to move quickly and be effortless. For example, by breaking a monolith micro services allows teams to move quickly and act independently; using containers and serverless gives developers maximum portability and capability to resize resources to the right application needs; perceptibility ensures that changes in micro-performance and application performance are detected early; and continuous integration and continuous delivery reduce the size and complexity of deployments so that new features can be released to customers faster and with less risk.
Proton enables customers to deploy and optimize these aspects of application development — microservices, repositories and serverless, visibility, and CI / CD — by enabling customers to select and deploy the right technologies, tools, and processes in their organization. It does this by focusing on three areas: collaboration, self-deployment, and updating.
Collaboration: Identify best practices together
Our vision is for experts to describe the best techniques in the model, and this model is a living, public object that can evolve over time, whether the experts come from creating new versions or from stakeholders proposing updates. At the same time, developers can customize this model upon deployment. With a public archive of Proton models, your stakeholders understand your technology choices and work together to make them better. Experts continue to curate the final options and make them available, but the information is not limited and improvements can be owned by everyone. Proton involves collaboration in models.
Proton models can be adapted and developed in many ways. Today, Proton allows platform groups to define new versions of existing models and deploy them in existing services without developer intervention. Over time, we will expand the scope of this cooperation. For example, you can sync models from the Git repository, so all stakeholders can only suggest an improvement with a pull request. Developers can also add a custom infrastructure to their services upon deployment so that they can incorporate the resources they need, and experts can confirm these one-time changes before they are released.
Self-service management: Submit your application on your terms
Defining a secure, easy-to-use model for delivering applications does not slow down the development team; it speeds them up. They can focus on their code knowing that delivering it to the cloud is quick and easy. But if using this model requires going through complex processes, cutting flags, and waiting for approvals, value is lost. We need a mechanism that allows developers to access the infrastructure they need on a fully self-service basis, but leaves visibility and control in the hands of experts.
Proton does this by providing a fully self-service interface for delivering the application. Developers can see the deployment status of their service from Proton UX and can make changes to it, such as updating parameters or deploying new environments. Going forward, we plan to continue to include functionality – for example, by allowing developers to trigger returns directly from Proton or display the health status of services in the Proton console.
Upgrading: Bring your infrastructure with you as you evolve
Of course, constantly evolving models are only useful if you can move your current deployment with them and change not only future practices but also existing ones. Today, your deployment may meet your needs, but as new tools and resources become available or as your business requirements change, you’ll likely want to return to those choices. You don’t want to feel like the decision you made six months ago is now motionless.
This is Proton’s core principle: supporting applications throughout their lifecycle. With Proton, customers can see what and who has deployed it. They can keep track of which version of the background template is in use by each microservice and import it to the latest version with a single click. This is done openly for developers who do not need to be involved, as Proton is responsible for injecting deployment parameters into the new model version.
Configure the infrastructure
Now, of course, everything becomes a cost. In this case, these costs are the process of defining the infrastructure and making it available through Proton. To truly embrace these modern paradigms, you need to make your own – configure serverless and container infrastructures, configure your CI / CD piping, and choose a visibility strategy – and then go to Proton, install everything, and begin the process. by accepting it in your organization. This job pays off quickly. The result is a highly effective experience for developers and an organization capable of delivering modern applications efficiently and securely on a scale.
Delivery of download applications
The world of digital technologies is moving faster than ever, beyond what individuals or even individual teams can follow. Like thousands of Amazon’s in-house technology teams, our customers face the same challenges and need to be confident that they meet their security, compliance, and cost standards in all of their distributed micro services.
As I said at the beginning, I think the solution to complexity and speed is not to eliminate the choice to choose the right technology for the right job, but allows developers to choose things that are important to them, removing unnecessary bears and helping them use them effectively. Just like an orchestra that uses similar notes to produce beautiful music, companies can move smoother and faster with Proton.
I have seen many attempts to find this harmony. We can standardize around a tool like Platform-as-a-Service (PaaS) that provides a single interface that includes all the components of application delivery, but this takes away from the choices customers have to make to make the decisions the customer makes. Creator of PaaS. Alternatively, we can hold a particular team in our organization to be responsible for deploying and managing applications, but this brings a new bottleneck to our delivery and creates a barrier between developers and the technologies they need. Another option is to create your own delivery platform: an internal tool that allows developers to deliver their applications using an approved infrastructure. Of course, this means that we need to design, create and maintain such a tool, which is by no means trivial. And what’s more, we need to constantly adapt it to our changing needs and new technologies.
Our goal is to eliminate unspecified heavy lifting for our customers. In this case, we put our internal approach into practice by creating a service that allows you and your developers to focus on the important things: creating amazing applications with the best available technology.
For more information on packing application delivery, see AWS protons.