Cloud-Native Application Architecture

Monday, 9:00 AM PDT - SALON A

Cloud-native architectures combine the unique aspects of cloud platforms with the principles of DevOps and Continuous Delivery to enable the rapid development, deployment, and management of applications. As the speed of innovation becomes one of the key drivers of business success, these architectures ensure teams are able to meet the need of the business, to move quickly, while at the same time ensuring important non-functional characteristics like availability and scalability.

Many of the innovators in this space, including Amazon, Twitter, LinkedIn, and Netflix, leverage small, autonomous teams which focus on business capabilities and build twelve-factor style, microservice applications. Microservices integration is achieved via lightweight, decentralized, and choreographed point-to-point interactions rather than the heavyweight, centralized, and orchestrated ESB-style integration found in traditional SOA.

With the advent of cloud-native architectures, building distributed systems will become increasingly common for the enterprise Java developer. Fortunately many of these same innovators have embraced the JVM as they’ve built increasingly complex systems, with Netflix open-sourcing much of its toolkit for constructing these systems at NetflixOSS.

Cloud Foundry and Spring provide open source framework tooling and platform services for developers to quickly build some of the common patterns in found in distributed, cloud-native systems. Many of these patterns are provided by the Spring Cloud project, which wraps many of the battle-tested components found at NetflixOSS with the Spring programming model, and provides easy deployment of NetflixOSS services to Cloud Foundry.

In this class the learner will have the opportunity to practice working with cloud-native architectures using Spring and Cloud Foundry.

Workshop Requirements

This session is a workshop. Please come prepared.

To be successful, you'll need certain prerequisite tools installed on the laptops that you'll be bringing to the session:

  • Java 8 JDK (not just JRE)

  • Install the Spring Boot CLI, version 1.4.1.RELEASE. Choose an installation method from the Spring Boot reference docs.

Once you have installed the Spring Boot CLI, ensure that it is on your execution path with the following command:

$ spring --version
Spring CLI v1.4.1.RELEASE

Assuming that this command works and you see the correct version, install the Spring Cloud CLI plugin using the following command:

$ spring install org.springframework.cloud:spring-cloud-cli:1.2.1.RELEASE
Installing into: /Users/mstine/.sdkman/candidates/springboot/1.4.1.RELEASE/lib/ext
Resolving dependencies...

You should see similar output, but the installation location will depend on the method you chose to install the Spring Boot CLI. The output above is based on an SDKMAN!-based installation.

  • Git (latest)

  • Cloud Foundry Client (latest)

  • ngrok (latest)

  • You'll need a free GitHub account. If you don't already have one, create one here.

  • Also, you'll need to create a Pivotal Web Services account here.
    Pivotal Web Services is a hosted instance of Cloud Foundry that is operated by Pivotal.

  • You will likely find your favorite Java IDE helpful for things like auto-importing packages and classes. Spring Tool Suite, Eclipse, or IntelliJ IDEA are all perfectly valid choices!

About Matt Stine

Matt Stine

My passion is taking a metaphysical approach to software engineering: what is the nature of the collaborative game that we continuously play, and are there better, more contextually-aware ways to play that game?

By day I lead a team tasked with taking a first-principles-centric approach to intentionally enabling programming language usage at the largest bank in the United States.

By night I write and teach my way through a masterclass in software engineering and architecture targeting early-career software engineers working in large-scale enterprise technology organizations.

What is the primary goal?

To win the game. More seriously: to get 1% better every day at providing business value through software.

Who am I?

I'm a 22-year veteran of the enterprise software industry. I've played almost every role I can imagine:

  • Software Engineer
  • Software Architect
  • Technical Lead
  • Engineering Manager
  • Consultant
  • Product Manager
  • Field CTO
  • Developer Advocate
  • Conference Speaker
  • Author
  • Technical Trainer
  • Technical Marketer
  • Site Reliability Engineer
  • Desktop Support Specialist

I've worked at Fortune 500 companies, a tenacious teal cloud startup, and a not-for-profit children's hospital. I've written a book, and I've hosted a podcast. I've learned a lot along the way, including many things I wish I'd known when I first got started. And so now I want to pass those learnings on to you, especially if you've only just begun your career.

More About Matt »