Building a Large Scale Distributed Application

24
Navigating the Challenges of Building a Large Scale Distributed Application A Case Study Sridhar Komandur, PhD Student Information Systems

Transcript of Building a Large Scale Distributed Application

Page 1: Building a Large Scale Distributed Application

Navigating the Challenges of Building a Large Scale Distributed Application

A Case Study

Sridhar Komandur, PhDStudent Information Systems

Page 2: Building a Large Scale Distributed Application

What is MyPlan ?

MyPlan is an academic planning tool for

University of Washington Students.

Page 3: Building a Large Scale Distributed Application

What is MyPlan?

Course Exploration(long term planning) Short Term Schedule

Creation Registration

Academic Year ViewCourse SearchPlan AuditAdvising Recommendations Messages

Single Quarter ViewSection detailsSearch on sec criteria

Integration with: UW.Notify SIS Registration

Schedule builderSection detailsSection status

Program Exploration

Transfer Planning

Program: Program BrowseTransfer: Transfer PlannerAdvising

Page 4: Building a Large Scale Distributed Application

MyPlan Usage

As of Jan 5, 2017 …

Total Students who have a plan : 88,324 UW Students : 73,661 83% Non-UW Students : 14,663 17%

Freshmen adoption : 5,903 81% (as of Sep 2016)

Page 5: Building a Large Scale Distributed Application

MyPlan Uptake

Page 6: Building a Large Scale Distributed Application

MyPlan Uptake

Page 7: Building a Large Scale Distributed Application

MyPlan: Ecosystem

AppsConfigPlatformHosts

USERS MYPLAN

Advisors

Faculty/Staff

Students

PARTNERS

First Year Programs (FYPs)

Registrar’s Offices

Undergraduate Advising

UW-IT Cross-functional Teams

… and more

Page 8: Building a Large Scale Distributed Application

MyPlan Tagline

We make a lot of the data you see consumable!

We don't create a lot of data you see.

Page 9: Building a Large Scale Distributed Application

MyPlan: Data Aggregation

Page 10: Building a Large Scale Distributed Application

MyPlan: Data Aggregation

Page 11: Building a Large Scale Distributed Application

MyPlan: Data Sourcing Diagram

Page 12: Building a Large Scale Distributed Application

Scaling

MyPlan was a Monolith: Put all its functionality into a single process

Once upon a time (~2011) …

Page 13: Building a Large Scale Distributed Application

ScalingThe Monolith 2.0The Monolith 1.0

Page 14: Building a Large Scale Distributed Application

MyPlan Scaling Microservices Put each element of functionality into a separate serviceThe Monolith

Page 15: Building a Large Scale Distributed Application

MyPlan Scaling

Page 16: Building a Large Scale Distributed Application

SOLR CLIENT

SOLR CLIENT

MyPlan Scaling: Data Sourcing ArchitectureAPPLICATION TIER CORE DATA SVCS TIER

REACT APPSCLUSTER

KRAD APPCLUSTER

POLLER(ETL)

Amazon SQS

DATA SOURCE

SOLR MASTER

SECTIONSTATUS

CORES

COURSE

PROGRAM

SOLR CLIENTSOLR CLIENT

REPLICATION

Page 17: Building a Large Scale Distributed Application

MyPlan Scaling: DATA SOURCING ARCHITECTURE

Page 18: Building a Large Scale Distributed Application

MyPlan Scaling● Currently we have 34 virtual machines (and growing!)

Challenges

How do we track and manage what’s on those VMs ?

● Apps● Platform ● Configuration (includes app config, certs etc)● Provisioning● Orchestration

Page 19: Building a Large Scale Distributed Application

MyPlan Scaling

Automation using Ansible!● Deployment● Provisioning● Orchestration

Page 20: Building a Large Scale Distributed Application

Monitoring & TroubleshootingShort term and long term concerns

● Active monitoring: PageWatch -> UW Connect tickets● During Registration (predictable peaks)● Short term/immediate troubleshooting ● Long term issue trend analysis (creep up over time)● Which Apps are deployed and where ? (features,testing,troubleshooting)

Page 21: Building a Large Scale Distributed Application

Monitoring & Troubleshooting

Page 22: Building a Large Scale Distributed Application

Operational Data AggregationWe use Splunk for operational data aggregation

● Collects logs from all our hosts (troubleshooting, trend analysis)○ Potential for tracing activity end-to-end through the entire system (e.g, instrumenting uuid)

● Instrumented Apps to collect user experience data○ Potential for User Behavior Analytics

● Potential for Splunk alerts to trigger actions

Page 23: Building a Large Scale Distributed Application

Future Work

● Change management● User Behavior Analytics● Predictive Analytics/Demand Forecasting

Page 24: Building a Large Scale Distributed Application

Reference

● Microservices, Martin Fowler (https://martinfowler.com/articles/microservices.html)