The Cloud of Tomorrow

With this recent announcement by both Google and Amazon for their support of Docker container management services, the shift towards shipping Docker containers instead of just application code (e.g. git repository) seems all but certain. This isn't too surprising given that these two and Microsoft have already offered basic support for Docker containers.

Amazon has announced a compelling suite of new features at its AWS re:invent industry event. The two that strike me as the potentially most disruptive are Amazon's relational DB service Aurora and event-driven compute service Lambda.

In a nutshell, both of them provide a major abstraction layer that essentially shifts the responsibility of scaling and maintenance from Amazon's customers to AWS.

In the future, the underlying cloud-based infrastructure of web and mobile-based applications will likely differ in these ways:

  • Shipping containers instead of code: in the pursuit of making deployments predictable across all environments, technology such as Docker containers have become ascendant. By fulling capturing the runtime environment and all of an application's dependencies in a snapshot, DevOps teams will be able to work in fully normalized environments across thousands of instances of their application

  • Real-time compute services: Amazon Lambda allows developers to avoid having to think about provisioning instances, load balancing, and maintaining systems. Instead, it allows them to essentially solely focus on the code the service will execute.

  • Micro-services (internal and external): Complex applications will be comprised of dozens if not hundreds of services that are stitched together. Some of these services will be internal (e.g. those core to the product and company) and others will be external (e.g. application performance analytics)

  • Abstracting away the issues of scaling and maintenance: Two of the largest challenges of scaling up are 1) handling a large number of concurrent requests on your compute instances (e.g. a traffic spike due to getting written up by Tech Crunch) and 2) managing a large database such as replication, sharding, backups, failover, etc. Databases are some of the most valuable assets of a company and a single catastrophic database error could close the doors of the business. This is similar to above

    • Database as a service
    • Scalable compute services
  • Yeoman work will be efficiently automated and handled by external service providers: There's a lot of work in developing and maintaining a high-performance application that most developers know they should do, but don't want to do. Think:

    • Optimizing front-end performance through concatenation, minification, and client-side caching (think Javascript tools like Grunt, Gulp, etc)
    • Monitoring and managing availability. Tracking application performance data (think New Relic)
    • Managing a Content Delivery Network (CDN) to ensure quick access of your application anywhere in the world
    • Maintaining IT security. In addition to applying patches, companies need to proactively monitor intrusions and identify any potential security gaps
    • Meeting regulatory compliance. Keeping track of administrative issues, logging, and managing user permissions
  • Cloud services will become more secure than the alternatives: Certain industries such as government, healthcare, and financial services have been reluctant to adopt cloud services due to concerns around regulatory compliance. As cloud services become more mature and hybrid approaches (partially public and private) proliferate, these industries will pick up on their adoption of cloud services.

A lean, scalable cloud-based infrastructure:

  • Handle API requests with Amazon Lambda (event-based compute services)
  • Deliver static assets with Amazon S3 (storage services)
  • Database as a Service (Amazon Aurora for SQL)
  • Cached data / CDN-ified (Redis & services)

Essentially, the backbone on various online applications will look increasingly similar with the only major difference being the product-related code. This might seem like an obvious point, after all tech companies are primarily interested in creating great products and services, not managing complex and costly IT infrastructure that support their offerings.

views