Amazon CTO Werner Vogels delivered what resembled an information technology lecture on 21st century systems and the need for architectures that are "cost aware" and align directly to business goals.
According to Vogels (right), so-called resource focused projects have high failure rates, are limited and rarely meet business needs. Business focused projects are more agile and meet real needs that align with real financial metrics.
Now let's get real. Vogels' subtext here is that cloud---specifically Amazon Web Services---is business focused while the old world---think capacity guesses and data centers---is resource focused.
More: Amazon Web Services: Rackspace's OpenStack low on customers' radar | Amazon Web Services launches Redshift, datawarehousing as a service| Amazon Web Services cuts S3 prices, knocks old guard rivals | BitYota launches, eyes data warehousing as a service | NetApp, Amazon Web Services set hybrid cloud storage pact
"Everything is a programmable resource including data centers, networks, compute, storage, databases and load balancers," he said. "This is the major difference from the old world. Everything was constrained."
Overall though, Vogels has a point. He outlined the following components of 21st century architectures. Vogels also noted that Amazon turned off its last physical server Nov. 10, 2010. Now what used to be called servers are actually small software components.
Vogels then went through a series of commandments for building next-gen architectures. "I'm not going to go Old Testament on you guys, but there are a few commandments," quipped Vogels.
Among the key commandments.
- Architect with cost in mind and be cost aware architectures. "We are capable of delivering an architecture where costs grow at the same dimension as company makes money," said Vogels. At Amazon, capacity is aligned to customer orders.
- Software units have to be decomposed into loosely coupled building blocks.
- Don't become attached to your IT infrastructure. Servers won't love you back, said Vogels.
- There are always code failures. Don't think in single failures. In fact, failures are not an exception. "Failure is another form of deployment," said Vogels.
- Assume nothing. Earlier systems assumed that failures are not correlated. "In reality failures are correlated," said Vogels. "Your code is full of failures."
- You have to leave that resource thinking behind. "EC2 may look like a server it is not. It's something you can switch off. It's a software component. If you treat like a server you limit yourself," said Vogels.
- Automate applications and processes. "We're (humans) are just not good at managing it," said Vogels.
- Let business levers control the system.
- In production, deploy at least two availability zones.
- Integrate security into your application from the ground up. Everything should be encrypted. Security is about taking care of your customers, said Vogels.
- Build, test, integrate and deploy continuously.