Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI-CD Jenkins, GitHub Actions, Tekton

CI-CD Jenkins, GitHub Actions, Tekton

Building Cloud-Native App Series - Part 9 of 12
Microservices Architecture Series
CI-CD Jenkins, GitHub Actions, Tekton

00608f9373723d296b25ddac2a9eb06b?s=128

Araf Karsh Hamid

June 01, 2022
Tweet

More Decks by Araf Karsh Hamid

Other Decks in Technology

Transcript

  1. @arafkarsh arafkarsh 8 Years Network & Security 6+ Years Microservices

    Blockchain 8 Years Cloud Computing 8 Years Distributed Computing Architecting & Building Apps a tech presentorial Combination of presentation & tutorial ARAF KARSH HAMID Co-Founder / CTO MetaMagic Global Inc., NJ, USA @arafkarsh arafkarsh 1 Microservice Architecture Series Building Cloud Native Apps Continuous Integration Continuous Delivery Continuous Deployment GitHub Actions, Tekton, Jenkins Part 9 of 12
  2. @arafkarsh arafkarsh 2 Slides are color coded based on the

    topic colors. Continuous Integration Continuous Delivery Continuous Deployment 1 GitHub Actions CI / CD 2 Tekton CI / CD 3 Jenkins CI / CD Comparison Tekton vs. Jenkins 4
  3. @arafkarsh arafkarsh Agile Scrum (4-6 Weeks) Developer Journey Monolithic Domain

    Driven Design Event Sourcing and CQRS Waterfall Optional Design Patterns Continuous Integration (CI) 6/12 Months Enterprise Service Bus Relational Database [SQL] / NoSQL Development QA / QC Ops 3 Microservices Domain Driven Design Event Sourcing and CQRS Scrum / Kanban (1-5 Days) Mandatory Design Patterns Infrastructure Design Patterns CI DevOps Event Streaming / Replicated Logs SQL NoSQL CD Container Orchestrator Service Mesh
  4. @arafkarsh arafkarsh Capability Centric Design 4 Business Centric Development •

    Focus on Business Capabilities • Entire team is aligned towards Business Capability. • From Specs to Operations – The team handles the entire spectrum of Software development. • Every vertical will have its own Code Pipeline, Build Pipeline Front-End-Team Back-End-Team Database-Team In a typical Monolithic way, the team is divided based on technology / skill set rather than business functions. This leads to not only bottlenecks but also lack of understanding of the Business Domain. QA Team QA = Quality Assurance PO = Product Owner Vertically sliced Product Team Front-End Back-End Database Business Capability 1 QA PO Ops Front-End Back-End Database Business Capability 2 QA PO Ops Front-End Back-End Database Business Capability - n QA PO Ops
  5. @arafkarsh arafkarsh Continuous Integration Continuous Delivery • GitHub Actions •

    Tekton • Jenkins 5 1
  6. @arafkarsh arafkarsh Stages of DevOps Delivery Pipeline 6 Source: Sanjeev

    Sharma, IBM, DevOps for Dummies Application Release Management Development Build Package Repository Test Environment Stage Environment Production Environment Application Deployment Automation Cloud Provisioning mvn repository npm repository Docker hub
  7. @arafkarsh arafkarsh Production Environment Continuous Monitoring Fully Automated Continuous Deployment

    Shift Left – CI/CD/CD 7 • Operations Concerns move earlier in software delivery life cycle, towards development. • The Goal is to enable Developers and QC Team to Develop and Test the software that behave like Production System in fully automated way. Development Environment Build Build Build Test Environment Continuous Integration Unit Testing Component Testing Contract Testing Integration Testing Continuous Testing Shift Left moves operations earlier in development cycle. Stage Environment Acceptance Testing Pull Request / Merge Continuous Delivery
  8. @arafkarsh arafkarsh GitHub Actions 1. Events 2. Jobs 3. Runners

    4. Steps 5. Actions 8 Workflows 2
  9. @arafkarsh arafkarsh GitHub Action Components 9 Events Workflows Actions Triggers

    Uses 1. Jobs 2. Runner 3. Steps
  10. @arafkarsh arafkarsh Action Components 10 1. Event 2. Jobs 3.

    Steps 4. Action Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions.
  11. @arafkarsh arafkarsh Events 11 GitHub Triggered Events 1. push 2.

    pull_request Scheduled Events Manually Triggered Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
  12. @arafkarsh arafkarsh Workflows 12 Pipeline Directory .github/workflows/ Events (on) Jobs

    Steps Support Multiple Jobs (Parallel and Sequential) Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
  13. @arafkarsh arafkarsh Workflows - Bringing everything together 13 Listens on

    Events Executes pre-built Actions Or Custom Actions Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
  14. @arafkarsh arafkarsh Workflows - Bringing everything together 14 Actions runs

    on • Linux • Windows • Mac OS Or • Docker on Linux Logs Results Secret Stores with each Repository or Organization Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
  15. @arafkarsh arafkarsh Workflows - Expressions 15 Add Expressions to execute

    a Job based on Conditions Source: https://docs.github.com/en/actions/learn-github-actions/expressions Production Version Executes if the event is on main Branch. Events Workflows Actions Triggers Uses
  16. @arafkarsh arafkarsh Workflows – Environment Variables 16 Add Expressions to

    execute a Job based on Conditions Source: https://docs.github.com/en/actions/learn-github-actions/environment-variables. Add Environment Variables Add Environment Variables
  17. @arafkarsh arafkarsh Actions 17 Pre – Built Actions – Reference

    Author Custom Actions Publish Actions in Market Place Events Workflows Actions Triggers Uses
  18. @arafkarsh arafkarsh Action Types 18 Container Action Virtual Machine Action

    (JavaScript) Environment Linux Linux, Windows, MacOS Language Any Compiles to JavaScript Speed Normal Good User Experience Normal Good
  19. @arafkarsh arafkarsh CI Workflow 19 Events to Trigger the Workflow

    Build Job Steps 1. Checkout Step 2. Language (Java) Setup Step 3. Build Package Step 4. Upload Artifacts Step
  20. @arafkarsh arafkarsh GitHub Actions - Stats 20 6500+ Actions in

    Market Place 73m+ Jobs per month #1 CI on GitHub
  21. @arafkarsh arafkarsh Summary – GitHub Actions 21 1. Modular in

    nature 2. Declarative Model 3. Jobs Runs in Virtual Machines or Containers 4. Well Defined Pipeline Workflows 5. Conditional Workflows 6. Market Place for pre-built Actions
  22. @arafkarsh arafkarsh Tekton • Events • Workflows • Actions 22

    3
  23. @arafkarsh arafkarsh Tekton Components 23 Pipeline Triggers CLI Dashboard Catalogue

    Hub
  24. @arafkarsh arafkarsh Tekton Pipeline 24 Pipeline Tasks Steps Tasks Tasks

    Container
  25. @arafkarsh arafkarsh Tekton Hub 25

  26. @arafkarsh arafkarsh Tekton – Tasks • Single Step • Multi

    Step • Params • Share Data • Workspaces 26
  27. @arafkarsh arafkarsh Task – Multiple Steps 27 • Task Contains

    N Number of Steps • Each Step is a Container
  28. @arafkarsh arafkarsh Task - Parameters 28

  29. @arafkarsh arafkarsh Task - Script 29

  30. @arafkarsh arafkarsh Task – Share Data 30

  31. @arafkarsh arafkarsh Task – Workspace 31 Task Contains N Number

    of Steps Each Step is a Container
  32. @arafkarsh arafkarsh Tekton - Pipelines • Simple Pipeline • Parallel

    Execution • Ordered Execution • Merging of Parallel Tasks • Finally 32
  33. @arafkarsh arafkarsh Pipeline 33

  34. @arafkarsh arafkarsh Pipeline – Timeout 34

  35. @arafkarsh arafkarsh Pipeline - Finally 35

  36. @arafkarsh arafkarsh Pipeline – Task Order 36

  37. @arafkarsh arafkarsh Summary - Tekton 37 1. Scalable Architecture •

    Kubernetes Native 2. Modular Architecture • Object Modeling • Pipelines • Tasks 3. Composable Workflows 4. Reusable Tasks (Across different pipelines 5. Declarative Model
  38. @arafkarsh arafkarsh Jenkins • Jenkins Pipelines • Comparison 38 4

  39. @arafkarsh arafkarsh Jenkins Pipeline 39

  40. @arafkarsh arafkarsh Summary 40 1. UI driven Configuration 2. Declarative

    Model 3. Monolithic Jenkins File 4. Runs on a Server
  41. @arafkarsh arafkarsh Comparison : Tekton / Jenkins • Architecture Comparison

    • Key Differences 41
  42. @arafkarsh arafkarsh Tekton vs Jenkins 42 Event Listener Trigger Temp

    Pipelines Task Build 1. Step 1 2. Step 2 3. Step n Task Test 1. Step 1 2. Step 2 3. Step n Task Deploy 1. Step 1 2. Step 2 3. Step n Workspace Volumes Kubernetes Cluster File System Jenkins Server Virtual Machine Pipelines Jenkins File Stage (Build) 1. Step 1 2. Step n Stage (Test) 1. Step 1 2. Step n Stage (Deploy) 1. Step 1 2. Step n Credentials Web Hook Source Code Repository
  43. @arafkarsh arafkarsh Tekton vs Jenkins 43 1. Scalable Architecture •

    Kubernetes Native 2. Modular Architecture • Object Modeling • Pipelines • Tasks 3. Composable Workflows 4. Reusable Tasks (Across different pipelines 5. Declarative Model 1. Declarative Model 2. Monolithic Jenkins File 3. Runs on a Server
  44. @arafkarsh arafkarsh CI / CD Tools – 2020 44 Source:

    https://www.katalon.com/resources-center/blog/ci-cd-tools/ Jenkins CircleCI TeamCity Bamboo GitLab Open Source Yes No No No No Ease of Use & Setup Medium Medium Medium Medium Medium Built-in Features 3/5 4/5 4/5 4/5 4/5 Integration * * * * * * * * * * * * * * * * * * * Hosting On Premise & Cloud On Premise & Cloud On Premise On Premise & BitBucket as Cloud On Premise & Cloud Free Version Free From $39 per Month From $299 one-off payment From $10 one-off payment From $4 per Month Supported OS Windows, Linux, Mac, Unix Linux, Mac Windows, Linux, Mac, Solaris, Free BSD Windows, Linux, Mac, Solaris Linux Distributions: Ubuntu, Debian, CentOS, Oracle Linux
  45. @arafkarsh arafkarsh 45 Design Patterns are solutions to general problems

    that software developers faced during software development. Design Patterns
  46. @arafkarsh arafkarsh 46 DREAM | AUTOMATE | EMPOWER Araf Karsh

    Hamid : India: +91.999.545.8627 http://www.slideshare.net/arafkarsh https://www.linkedin.com/in/arafkarsh/ https://www.youtube.com/user/arafkarsh/playlists http://www.arafkarsh.com/ @arafkarsh arafkarsh
  47. @arafkarsh arafkarsh 47 Source Code: https://github.com/MetaArivu Web Site: https://metarivu.com/ https://pyxida.cloud/

  48. @arafkarsh arafkarsh 48 http://www.slideshare.net/arafkarsh

  49. @arafkarsh arafkarsh References 49 1. July 15, 2015 – Agile

    is Dead : GoTo 2015 By Dave Thomas 2. Apr 7, 2016 - Agile Project Management with Kanban | Eric Brechner | Talks at Google 3. Sep 27, 2017 - Scrum vs Kanban - Two Agile Teams Go Head-to-Head 4. Feb 17, 2019 - Lean vs Agile vs Design Thinking 5. Dec 17, 2020 - Scrum vs Kanban | Differences & Similarities Between Scrum & Kanban 6. Feb 24, 2021 - Agile Methodology Tutorial for Beginners | Jira Tutorial | Agile Methodology Explained. Agile Methodologies
  50. @arafkarsh arafkarsh References 50 1. Vmware: What is Cloud Architecture?

    2. Redhat: What is Cloud Architecture? 3. Cloud Computing Architecture 4. Cloud Adoption Essentials: 5. Google: Hybrid and Multi Cloud 6. IBM: Hybrid Cloud Architecture Intro 7. IBM: Hybrid Cloud Architecture: Part 1 8. IBM: Hybrid Cloud Architecture: Part 2 9. Cloud Computing Basics: IaaS, PaaS, SaaS 1. IBM: IaaS Explained 2. IBM: PaaS Explained 3. IBM: SaaS Explained 4. IBM: FaaS Explained 5. IBM: What is Hypervisor? Cloud Architecture
  51. @arafkarsh arafkarsh References 51 Microservices 1. Microservices Definition by Martin

    Fowler 2. When to use Microservices By Martin Fowler 3. GoTo: Sep 3, 2020: When to use Microservices By Martin Fowler 4. GoTo: Feb 26, 2020: Monolith Decomposition Pattern 5. Thought Works: Microservices in a Nutshell 6. Microservices Prerequisites 7. What do you mean by Event Driven? 8. Understanding Event Driven Design Patterns for Microservices
  52. @arafkarsh arafkarsh References – Microservices – Videos 52 1. Martin

    Fowler – Micro Services : https://www.youtube.com/watch?v=2yko4TbC8cI&feature=youtu.be&t=15m53s 2. GOTO 2016 – Microservices at NetFlix Scale: Principles, Tradeoffs & Lessons Learned. By R Meshenberg 3. Mastering Chaos – A NetFlix Guide to Microservices. By Josh Evans 4. GOTO 2015 – Challenges Implementing Micro Services By Fred George 5. GOTO 2016 – From Monolith to Microservices at Zalando. By Rodrigue Scaefer 6. GOTO 2015 – Microservices @ Spotify. By Kevin Goldsmith 7. Modelling Microservices @ Spotify : https://www.youtube.com/watch?v=7XDA044tl8k 8. GOTO 2015 – DDD & Microservices: At last, Some Boundaries By Eric Evans 9. GOTO 2016 – What I wish I had known before Scaling Uber to 1000 Services. By Matt Ranney 10. DDD Europe – Tackling Complexity in the Heart of Software By Eric Evans, April 11, 2016 11. AWS re:Invent 2016 – From Monolithic to Microservices: Evolving Architecture Patterns. By Emerson L, Gilt D. Chiles 12. AWS 2017 – An overview of designing Microservices based Applications on AWS. By Peter Dalbhanjan 13. GOTO Jun, 2017 – Effective Microservices in a Data Centric World. By Randy Shoup. 14. GOTO July, 2017 – The Seven (more) Deadly Sins of Microservices. By Daniel Bryant 15. Sept, 2017 – Airbnb, From Monolith to Microservices: How to scale your Architecture. By Melanie Cubula 16. GOTO Sept, 2017 – Rethinking Microservices with Stateful Streams. By Ben Stopford. 17. GOTO 2017 – Microservices without Servers. By Glynn Bird.
  53. @arafkarsh arafkarsh References 53 Domain Driven Design 1. Oct 27,

    2012 What I have learned about DDD Since the book. By Eric Evans 2. Mar 19, 2013 Domain Driven Design By Eric Evans 3. Jun 02, 2015 Applied DDD in Java EE 7 and Open Source World 4. Aug 23, 2016 Domain Driven Design the Good Parts By Jimmy Bogard 5. Sep 22, 2016 GOTO 2015 – DDD & REST Domain Driven API’s for the Web. By Oliver Gierke 6. Jan 24, 2017 Spring Developer – Developing Micro Services with Aggregates. By Chris Richardson 7. May 17. 2017 DEVOXX – The Art of Discovering Bounded Contexts. By Nick Tune 8. Dec 21, 2019 What is DDD - Eric Evans - DDD Europe 2019. By Eric Evans 9. Oct 2, 2020 - Bounded Contexts - Eric Evans - DDD Europe 2020. By. Eric Evans 10. Oct 2, 2020 - DDD By Example - Paul Rayner - DDD Europe 2020. By Paul Rayner
  54. @arafkarsh arafkarsh References 54 Event Sourcing and CQRS 1. IBM:

    Event Driven Architecture – Mar 21, 2021 2. Martin Fowler: Event Driven Architecture – GOTO 2017 3. Greg Young: A Decade of DDD, Event Sourcing & CQRS – April 11, 2016 4. Nov 13, 2014 GOTO 2014 – Event Sourcing. By Greg Young 5. Mar 22, 2016 Building Micro Services with Event Sourcing and CQRS 6. Apr 15, 2016 YOW! Nights – Event Sourcing. By Martin Fowler 7. May 08, 2017 When Micro Services Meet Event Sourcing. By Vinicius Gomes
  55. @arafkarsh arafkarsh References 55 Kafka 1. Understanding Kafka 2. Understanding

    RabbitMQ 3. IBM: Apache Kafka – Sept 18, 2020 4. Confluent: Apache Kafka Fundamentals – April 25, 2020 5. Confluent: How Kafka Works – Aug 25, 2020 6. Confluent: How to integrate Kafka into your environment – Aug 25, 2020 7. Kafka Streams – Sept 4, 2021 8. Kafka: Processing Streaming Data with KSQL – Jul 16, 2018 9. Kafka: Processing Streaming Data with KSQL – Nov 28, 2019
  56. @arafkarsh arafkarsh References 56 Databases: Big Data / Cloud Databases

    1. Google: How to Choose the right database? 2. AWS: Choosing the right Database 3. IBM: NoSQL Vs. SQL 4. A Guide to NoSQL Databases 5. How does NoSQL Databases Work? 6. What is Better? SQL or NoSQL? 7. What is DBaaS? 8. NoSQL Concepts 9. Key Value Databases 10. Document Databases 11. Jun 29, 2012 – Google I/O 2012 - SQL vs NoSQL: Battle of the Backends 12. Feb 19, 2013 - Introduction to NoSQL • Martin Fowler • GOTO 2012 13. Jul 25, 2018 - SQL vs NoSQL or MySQL vs MongoDB 14. Oct 30, 2020 - Column vs Row Oriented Databases Explained 15. Dec 9, 2020 - How do NoSQL databases work? Simply Explained! 1. Graph Databases 2. Column Databases 3. Row Vs. Column Oriented Databases 4. Database Indexing Explained 5. MongoDB Indexing 6. AWS: DynamoDB Global Indexing 7. AWS: DynamoDB Local Indexing 8. Google Cloud Spanner 9. AWS: DynamoDB Design Patterns 10. Cloud Provider Database Comparisons 11. CockroachDB: When to use a Cloud DB?
  57. @arafkarsh arafkarsh References 57 Docker / Kubernetes / Istio 1.

    IBM: Virtual Machines and Containers 2. IBM: What is a Hypervisor? 3. IBM: Docker Vs. Kubernetes 4. IBM: Containerization Explained 5. IBM: Kubernetes Explained 6. IBM: Kubernetes Ingress in 5 Minutes 7. Microsoft: How Service Mesh works in Kubernetes 8. IBM: Istio Service Mesh Explained 9. IBM: Kubernetes and OpenShift 10. IBM: Kubernetes Operators 11. 10 Consideration for Kubernetes Deployments Istio – Metrics 1. Istio – Metrics 2. Monitoring Istio Mesh with Grafana 3. Visualize your Istio Service Mesh 4. Security and Monitoring with Istio 5. Observing Services using Prometheus, Grafana, Kiali 6. Istio Cookbook: Kiali Recipe 7. Kubernetes: Open Telemetry 8. Open Telemetry 9. How Prometheus works 10. IBM: Observability vs. Monitoring
  58. @arafkarsh arafkarsh References 58 1. Feb 6, 2020 – An

    introduction to TDD 2. Aug 14, 2019 – Component Software Testing 3. May 30, 2020 – What is Component Testing? 4. Apr 23, 2013 – Component Test By Martin Fowler 5. Jan 12, 2011 – Contract Testing By Martin Fowler 6. Jan 16, 2018 – Integration Testing By Martin Fowler 7. Testing Strategies in Microservices Architecture 8. Practical Test Pyramid By Ham Vocke Testing – TDD / BDD
  59. @arafkarsh arafkarsh 59 1. Simoorg : LinkedIn’s own failure inducer

    framework. It was designed to be easy to extend and most of the important components are plug‐ gable. 2. Pumba : A chaos testing and network emulation tool for Docker. 3. Chaos Lemur : Self-hostable application to randomly destroy virtual machines in a BOSH- managed environment, as an aid to resilience testing of high-availability systems. 4. Chaos Lambda : Randomly terminate AWS ASG instances during business hours. 5. Blockade : Docker-based utility for testing network failures and partitions in distributed applications. 6. Chaos-http-proxy : Introduces failures into HTTP requests via a proxy server. 7. Monkey-ops : Monkey-Ops is a simple service implemented in Go, which is deployed into an OpenShift V3.X and generates some chaos within it. Monkey-Ops seeks some OpenShift components like Pods or Deployment Configs and randomly terminates them. 8. Chaos Dingo : Chaos Dingo currently supports performing operations on Azure VMs and VMSS deployed to an Azure Resource Manager-based resource group. 9. Tugbot : Testing in Production (TiP) framework for Docker. Testing tools
  60. @arafkarsh arafkarsh References 60 CI / CD 1. What is

    Continuous Integration? 2. What is Continuous Delivery? 3. CI / CD Pipeline 4. What is CI / CD Pipeline? 5. CI / CD Explained 6. CI / CD Pipeline using Java Example Part 1 7. CI / CD Pipeline using Ansible Part 2 8. Declarative Pipeline vs Scripted Pipeline 9. Complete Jenkins Pipeline Tutorial 10. Common Pipeline Mistakes 11. CI / CD for a Docker Application
  61. @arafkarsh arafkarsh References 61 DevOps 1. IBM: What is DevOps?

    2. IBM: Cloud Native DevOps Explained 3. IBM: Application Transformation 4. IBM: Virtualization Explained 5. What is DevOps? Easy Way 6. DevOps?! How to become a DevOps Engineer??? 7. Amazon: https://www.youtube.com/watch?v=mBU3AJ3j1rg 8. NetFlix: https://www.youtube.com/watch?v=UTKIT6STSVM 9. DevOps and SRE: https://www.youtube.com/watch?v=uTEL8Ff1Zvk 10. SLI, SLO, SLA : https://www.youtube.com/watch?v=tEylFyxbDLE 11. DevOps and SRE : Risks and Budgets : https://www.youtube.com/watch?v=y2ILKr8kCJU 12. SRE @ Google: https://www.youtube.com/watch?v=d2wn_E1jxn4
  62. @arafkarsh arafkarsh References 62 1. Lewis, James, and Martin Fowler.

    “Microservices: A Definition of This New Architectural Term”, March 25, 2014. 2. Miller, Matt. “Innovate or Die: The Rise of Microservices”. e Wall Street Journal, October 5, 2015. 3. Newman, Sam. Building Microservices. O’Reilly Media, 2015. 4. Alagarasan, Vijay. “Seven Microservices Anti-patterns”, August 24, 2015. 5. Cockcroft, Adrian. “State of the Art in Microservices”, December 4, 2014. 6. Fowler, Martin. “Microservice Prerequisites”, August 28, 2014. 7. Fowler, Martin. “Microservice Tradeoffs”, July 1, 2015. 8. Humble, Jez. “Four Principles of Low-Risk Software Release”, February 16, 2012. 9. Zuul Edge Server, Ketan Gote, May 22, 2017 10. Ribbon, Hysterix using Spring Feign, Ketan Gote, May 22, 2017 11. Eureka Server with Spring Cloud, Ketan Gote, May 22, 2017 12. Apache Kafka, A Distributed Streaming Platform, Ketan Gote, May 20, 2017 13. Functional Reactive Programming, Araf Karsh Hamid, August 7, 2016 14. Enterprise Software Architectures, Araf Karsh Hamid, July 30, 2016 15. Docker and Linux Containers, Araf Karsh Hamid, April 28, 2015
  63. @arafkarsh arafkarsh References 63 16. MSDN – Microsoft https://msdn.microsoft.com/en-us/library/dn568103.aspx 17.

    Martin Fowler : CQRS – http://martinfowler.com/bliki/CQRS.html 18. Udi Dahan : CQRS – http://www.udidahan.com/2009/12/09/clarified-cqrs/ 19. Greg Young : CQRS - https://www.youtube.com/watch?v=JHGkaShoyNs 20. Bertrand Meyer – CQS - http://en.wikipedia.org/wiki/Bertrand_Meyer 21. CQS : http://en.wikipedia.org/wiki/Command–query_separation 22. CAP Theorem : http://en.wikipedia.org/wiki/CAP_theorem 23. CAP Theorem : http://www.julianbrowne.com/article/viewer/brewers-cap-theorem 24. CAP 12 years how the rules have changed 25. EBay Scalability Best Practices : http://www.infoq.com/articles/ebay-scalability-best-practices 26. Pat Helland (Amazon) : Life beyond distributed transactions 27. Stanford University: Rx https://www.youtube.com/watch?v=y9xudo3C1Cw 28. Princeton University: SAGAS (1987) Hector Garcia Molina / Kenneth Salem 29. Rx Observable : https://dzone.com/articles/using-rx-java-observable