What you'll learn
Produce microservice-based application architectures, critique modes of microservice communication, and use containerization & orchestration to deploy applications with no downtime.
Write better code to meet the scalability requirements of millions of users by deploying and scaling microservice-based applications.
With the advent of cloud computing resources, computer programmers were freed from the constraints imposed by inefficient corporate data centers. With the new resources came the freedom to establish new and innovative ways to create and deploy software. Thus, the microservices revolution began.
You will build microservice architectures from first principles to establish an in-depth understanding of the current best practices in the industry. Then, you will learn how to containerize, deploy, scale, and manage those microservices to guarantee resilience in a production environment.
Moving from monolithic applications to service-oriented architectures moved the complexity of applications from their implementation to the deployment, monitoring, and management of many individual applications. With the advent of infrastructure as code, developers can own the total application lifecycle. Understanding how to break down the features of an application into individually deployable services, and how to get those services into production in a repeatable and sustainable way, necessitates the comprehensive undertaking of both microservices and the orchestration it takes to make them work together in a production environment.
The term “microservice” has no universal definition. As such, it is important to understand the trade-offs that come with choosing aspects of each service’s internal and external architectures. This class provides you with a robust framework to help you design complex applications through a microservice architecture taking into consideration data responsibility, transactional scope, and strategies to properly test its correctness.
While Docker and Kubernetes have wide support, they are neither the beginning nor the end of proper application deployment, scaling, and management. You will face and gracefully overcome the challenges of networking and observability. You will get a chance to investigate alternative and complementary ideas and solutions that have strong community and industry support, for example, support for deploying and orchestrating non-containerized applications.
Produce microservice-based application architectures, critique modes of microservice communication, and use containerization & orchestration to deploy applications with no downtime.
Drink Me is a project to refactor a monolithic application into microservices and Out The Door is a project to deploy applications using big bang, blue-green, and canary styles.
You can write a three-tier database-backed Web application.
This two-fold path begins with exploring strong software design techniques and the fundamentals of orchestration. Using industry-standard design techniques, you’ll start growing your expertise at modeling software systems. You’ll also become familiar with how to isolate an application within a container.
Use Domain-Driven Design to structure your approach to software design
Learn about different communication paradigms that allow a distributed application’s components to communicate with one another
Install and use Docker to codify the foundations of your application infrastructure
With continued application of software design techniques, you’ll be able to determine microservice boundaries for a distributed application. Then, you’ll peer inside a microservice to comprehend the internal workings and communication portals. You’ll use this knowledge to coordinate multiple microservices to run together as an application.
Design and build internal and external APIs for microservices
Determine the proper communication paradigms and implementations to allow communication with microservices
Investigate service discovery using simple orchestration tools
While testing software comes in many forms, the advent of microservices has extended the need for new tools and methods to test the various components’ intercommunication as well as reliability. You’ll work through the challenges of testing microservices using state-of-the-art tools while revisiting design implications for these concerns.
Use contract testing to test producers and consumers of messages
Understand chaos testing for reliability across a deployed microservice topology
Use more complex orchestration tools to manage microservice provisioning and deployment
There are many ways to get your application into production. You’ll use another set of orchestration tools with a different design paradigm to get a microservice-based application into production to support specific deployment use cases.
Determine best-fit deployment models for specific functional and non-functional requirements
Use alternative orchestration tools to manage microservice provisioning and deployment
Hardening your application for a production environment requires the use of forethought and specific patterns around resource access. You’ll implement resiliency patterns in your application using widely-adopted libraries for a variety of languages.
Implement the circuit breaker pattern
Implement the bulkhead pattern
Implement the sidecar pattern
Use a service mesh to automate the security and intercommunication of your microservice-based application
Now, it’s time for the world to see what you can do! You’ll deploy an application using orchestration tools to the major cloud providers. Then, you’ll fine-tune the deployments with specific deployment strategies and discover how they’re supported by the platforms.
Perform deployments to the major cloud providers: Amazon AWS, Google Cloud, and Microsoft Azure
Implement blue-green, canary, big-bang, and rolling deployments using orchestration tools
Curtis Schlak’s software development career spans more than two decades in software, energy, finance, legal, and education. He has worked as an individual contributor and has led teams of nearly 200 people. He has worked or consulted at Barclays Capital, Bank of America Merrill Lynch, British Petroleum, CITGO Petroleum, Ernst & Young, and Microsoft. He has led software teams at startups like KickFire and DataCert. His consulting firm leads the training and adoption of Feature-Driven Development in the US. He has created and delivered consumer and enterprise training for hundreds of people through The Iron Yard, Hack Reactor, App Academy, and Galvanize. He has a BS in Mathematics, BA in English, and MS in Computer Science. He is currently working on his PhD in Computer Science.
Daniel Billotte’s career as a software engineer began in the mid 90’s, as the Internet was coming of age. He’s worked at large companies like Netscape, AOL, and Canon, as well as smaller companies and entrepreneurial ventures of his own. He has also worked extensively in the printing industry at every level from cleaning floors to building a globally deployed print-shop workflow tool. He helped start the first coding bootcamp in Phoenix in 2014. Daniel enjoys frontend web, but his passion is for building scalable backend systems that use cool technologies like neural networks. When he isn’t working or playing with his family, he’s riding his mountain bike, learning DSP/audio programming and audio circuit engineering, or breathing new life into an old truck. Daniel has a BS in Computer Science from Arizona State University.
Many of these companies reimburse tuition for our courses.
Our favorite applicant is someone who enjoys learning and participating in a dynamic learning community. We look for learners that are curious and motivated to further their craft. A learner who has grown tired of either unfocused or inefficient courses that have failed to take them to the next level.
Our application process is simple. Your application will help us learn more about you and should only take five minutes to complete. The application includes information about your educational background, programming experience, employment, and motivations for taking this course. We will review your application and either email any follow-up questions or accept you into the course. Once you’re accepted, you’ll sign an enrollment agreement and pay for the course.
Our typical course is six weeks long and consists of two evening classes per week. Our evening classes are 90 minutes long. Classes are recorded in case you are not able to attend them live. You can expect four to six hours per week outside of class for work on prepping for the next class and/or working on focused projects.
Some of our courses require prerequisite skills or knowledge. If applicable, we ask about this in the application process.
Yes, you can. The live classes, homework, and projects are optional. We encourage you to participate in all to get the most out of your investment in the course. To receive a certificate, you must score 70% or higher on the course project(s).
Yes. If your employer reimburses for education or professional development, we will make it easy for them to reimburse your participation in our courses.
Universities typically only focus on computer science theory. We blend computer science theory with practical programming practices and thought leadership strategies to create more relevant courses. This format has more real-world applications that will help you advance your career.
Please reach out to our team at profdev@galvanize.com.