Courses

SEI courses are created and delivered by recognized experts who have practical experience in the disciplines they teach. Our courses feature participatory tasks and real-world scenarios to enhance your learning.

SATURN 2018 offers three SEI courses at a discount from current course pricing.

Monday, May 7, 2018

Cloud Computing: An Architecture-Centric View

 

Instructor: John Klein, Carnegie Mellon University Software Engineering Institute

Cloud computing is changing the way we design, deploy, and manage software systems. In addition to supporting today's business goals, the cloud's elastic capacity and pay-per-use cost model let us rapidly deliver new types of solutions that weren't practical just a few years ago.

This one-day course provides an architecture-centric introduction to cloud concepts and capabilities, targeting architects, managers, and technical leaders who want to quickly get up to speed on cloud computing and how it impacts their designs and development processes. This is a fast-evolving field, so we'll focus on enduring principles and how the fundamental characteristics of cloud computing impact system architectures. The material emphasizes Infrastructure as a Service (Iaas), as a way to understand how the cloud works, and includes discussion of Platform as a Service (PaaS) and Software as a Service (SaaS) models.

We'll begin with definitions and examples and discuss the role of enabling technologies like virtualization and containerization. We'll look at tradeoffs involved in using cloud-native services for storage, database, networking, and application integration. This all leads up to a discussion of quality attributes in the cloud and how they impact our architecture approaches.

Course attendees will get a better understanding of the issues when migrating legacy systems to the cloud, be able to identify opportunities to develop new cloud-based solutions to meet business goals, and understand the changes to architecture approaches and development processes needed to create successful cloud-based software systems.

Monday, May 7, 2018

Essential Microservice Architecture

 

Instructor: Paulo Merson, Brazilian Federal Court of Accounts (TCU)

Many organizations are adopting microservices, but often their developers are not aware of the tradeoffs involved and the many design strategies available. In this course, we will cover the essential knowledge for successful microservice designs.

In this one-day course, we will cover four basic guidelines for service-oriented designs that use microservices. We'll look at the main strategies available today to realize each design guideline. These strategies include Event-Driven Architecture (EDA), the Database per Microservice pattern, the Service Data Replication pattern ("cache"), CQRS, API gateway, design standards for REST APIs, asynchronous messaging patterns, and the use of Domain-Driven Design to remodel services to avoid distributed transactions.

For this class, we developed a simple, clear, and consistent design notation for the more than 45 design diagrams used to convey and exemplify the design guidelines and strategies. But you don't just get to listen and read. Participants will share their experience throughout the course. The class ends with a hands-on design lab, in which attendees evaluate an existing design based on the design guidelines and create a new design using different patterns and other design strategies.

Prerequisites

Participants should have a sound understanding of distributed systems and REST.

Monday, May 7, 2018

Launching and Sustaining Agile Architecture

 

Instructor: Ipek Ozkaya, Carnegie Mellon University Software Engineering Institute
 

The importance of embracing both agile software development techniques and a solid software architecture focus is not questioned by software engineers and organizations. However, balancing the two still is a mysterious art rather than common practice.

The phrase “agile architecture” evokes two concepts:

  1. a system or software architecture that is versatile, easy to evolve, and easy to modify, while resilient enough not to degrade after a few changes
  2. an agile way to define an architecture, using an iterative lifecycle, allowing the architectural design to tactically evolve over time, as the problem and the constraints are better understood.

In the best of worlds, we’d like to have an agile process that leads to a flexible architecture. Agile Architecting is a course designed to help developers, architects, and managers learn how to introduce software architecture into agile software development. We will cover concepts such as

  • quality attributes and agile requirements
  • aligning architecture and organization
  • delivery infrastructures for agile development
  • developing your runway

We will play a design game about big data systems to simulate architecting in an agile and iterative incremental manner. We will end by discussing small targeted changes that software teams can make today to ensure that architectural tasks successfully enable agile development.