
Software Architecture - Metrics and Alarms Monitoring System
In this system-design, we will build a multi-component highly-distributed solution for monitoring, alerting, and dashboarding. These are critical services for maintaining high quality, highly available, fault-tolerant software. This solution will need to operate at a massive scale with potentially billions of requests per day. We will leverage a micro-service architecture to handle the very high volume and high availability requirements. For the metrics, we will separate areas of concern between data-collection, data-ingestion, data-processing, alerting, and dashboarding.
Software Architecture - Payments System
In this system design architecture post we will design a payments system. Payments systems are found across the internet for (1) maintaining a ledger of accounts, balances, and transactions; and (2) the processing of financial transactions between individuals, businesses, and banks. Though simple on the surface to customers, payment systems are complex with many failure scenarios, edge cases, and critical customer and business impact if things go wrong. These systems are critical to each party’s financial interests and their trust in a software platform.
When designing such a complex system where data consistency is of utmost importance we will emphasis designing for (1) data consistency and durability, (2) double-entry accounting (every transaction between two parties is zero-sum), (3) idempotency and exactly-once processing, and (4) immutability.
Software Architecture - Hotel Reservation Booking System
In this article, we will design and implement an online hotel reservation booking system. A similar solution with minor changes could also be used for flight reservations, concerts and events, or reserving unique Airbnb/Vrbo stays. We will start with user requirements and functional edge cases to consider. We will then dig into the backend services and APIs, persistence, transactionality, user and backend flows, the two frontend web applications for users and hotel managers respectively, and conclude with performance and scaling optimizations.
HTTP/3 with QUIC and TLS-1.3
The Internet (IP), Transmission Control (TCP), Hypertext Transfer (HTTP), and Transport Layer Security (TLS and SSL) protocols have long under-pinned the World Wide Web. Each provides a layer of abstraction focusing on specific concerns. Over time enhancements have been made to improve performance, security, and privacy, as well as extend functionality as the web has evolved. HTTP/3 with QUIC generally available in 2019 and TLS-1.3 generally available in 2018 are the latest broadly adopted protocols for web traffic providing enhancements over HTTP/1.1, HTTP/2, and TLS-1.2.
In this article we will dive into the details of HTTP/3 with QUIC and TLS-1.3, including HTTP/2, after first building up to these new technologies layer by layer.
Featured Projects
Nike App Personalized Feed
2019
Backend system architecture for personalized user feeds on the Nike App including product recommendations, authored content by featured athletes, and social functionality.
Nike GraphQL Multi-Tenant Platform
2019
Multi-org platform exposing a common set of stateless aggregation gateways on top of Nike’s hundreds of microservice APIs, enabling a variety of unique clients to define their exact data schema requirements across services in a declarative query. This improved time-to-market through thinner clients with reduced network calls and data orchestration; no more overhead to build and support one-off aggregation layers; reusable functionality; and improved client performance by reducing the number and size of network calls required for client-applications.
Nike.com Containerization and API Service Blueprint
2018
Organizational strategy, best practices, and blueprint for containerization. Service modernization into the containerized cloud across 12 backend and frontend teams. Service template with component library and custom service-generataion CLI improving time to market. Weekly internal-community-organized meetup to evolve the inner-open-source monorepo project library.
Faster deployments (5x), quicker scaling (5x), and more frequent deployments (8x). Improved infrastructure utilization, improved integration testing with environment parity, and improved UAT testing with deployments of N-number of unique branches.
Nike Retail Auth
2017
Foundational authentication and authorization service enabling retail employees worldwide to use their regional point-of-sale (POS) credentials as SSO to access hundreds of cloud-based Nike Digital APIs. Implemented independently adhering to OAuth and OpenID-Connect standards to provide JWT-credentials with extensive penetration-testing and multi-region failover (disaster recovery).
Nike Retail Touchscreens
2016
An "Endless Aisle" – interactive retail touchscreens enabling customers to browse .COM product, facilitate checkout, and provide mapping/sign-up for Nike events. Deployed worldwide across 100+ Nike retail locations, 3 continents, and 4 languages.
Implementation involved an Electron/NodeJS-based touchscreen platform providing seamless integration, inter-app navigation, and messaging between multiple independently developed web applications; several JavaScript (React/Redux/NodeJS) touch-screen web apps; and high-availability/scalability AWS architecture with canary continous-delivery.
- Engadget – Nike's new store in New York City is loaded with tech
- Business Insider – Nike is opening a 55,000-square-foot store of the future in NYC
- Nike.com – Nike Miami First Look
Department of Energy
2015
Multi-office platform built on the Drupal 7 framework providing a web presence for over 60 offices. Streamlined automation scripts with Jenkins. Mapbox integration for rich visualizations. Sophisticated publication workflow for reviewing of content with minimal developer assistance. Responsive design for a quality experience across a wide range of devices. Multi-region failover.
Phone Call Notes
2014
Android Java mobile app giving users the ability to take notes on phone call conversations, mapped to contacts. Google Play Store with hundreds of downloads and a 5-star average review.
Bassmaster
2014
Drupal 6 platform with accompanying Angular / Cordova mobile app for iOS and Android. Serves the half-a-million strong Bass Anglers Sportsman Society.
IRS
2012
Full-stack software development to expand IRS website with various functional, content, and UI changes.
and many more...