SlideShare a Scribd company logo
A RESTful, Auto-Scaling Payroll API
Mike, Joe, Edson
Introduction
RESTful Auto-Scaling Payroll API
Several Custom Components (Application, Translator, Accruals, Delivery)
Google Components (Load Balancer, Auto Scaling, Pub/Sub, Cloud Spanner)
Users send/receive data as JSON objects through HTTP Requests
Component Model
Load Balancer
Distributes our users to various applications that are in service
Distributes to a Managed Instance Group
Managed Instance Groups are just groups of identical instances built from an
Instance Template
Instance Template is an image of our Application
If changes are made to the Instance Template, these changes are rolled out to all
instances in the Managed Instance Group
Auto Scaling
Monitors the CPU level of our Application Instances
If it gets too high, new Application instances are created to help reduce the load
When the traffic dies down, these instances are shut off and deleted
automatically
Pub/Sub
Google’s Messaging Service that allows you send and receive messages
between independent applications.
Allowed for easy communication between all of our components
Topics:
● insert-new-company
● insert-new-employee
● insert-timesheets
● calculate-accruals
● paystub-delivery
Application
Flask Server
Routes Publishes To Returns
createCompany insert-new-company Response
addEmployee insert-new-employee Response
submit insert-timesheets Response
calculateAccruals calculate-accruals Response
deliveryRequest delivery-request Response
paystub - Your paystub
Translator
This component subscribes to 3 topics:
● insert-new-company
● insert-new-employee
● insert-timesheets
Parses the JSON message, generates a database insert statement, then inserts
the data
Accruals
Subscribes to calculate-accruals
Calculates your pay stub
Inserts your pay stub into the database
It only calculates your pay when you request it
Delivery
This instance has one job, to deliver pay stubs to the front-end application
Subscribes to delivery-requests
Queries the database for an employee’s pay stub
Publishes your pay stub to paystub-delivery
Cloud Spanner Database
Relational
Strong Consistency
High Availability
Automatic Replication
Horizontally Scalable
SQL-like queries
Component Model
Design Challenges
● Designing our components. What should they do? How do they interact with
the rest of our components?
● Constructing the JSON objects our users would be required to send
● Designing the database to work with the JSON
● We tried Google SQL first, but it was not horizontally scalable
● How to scale the Application server and add a Load Balancer?
● Issues with various Kafka libraries led to Google’s Pub/Sub
Conclusion
Things that would be nice:
● Auto calculate accruals (chron job, every 2 weeks or so)
● Full horizontal scalability (Translator, Delivery, Accruals)
● Find alternative for database cluster component instead of Cloud Spanner
● Costs $9000 per node/year ($0.90/hour for just 1 node)
● Can’t be shut down
Demo!

More Related Content

PDF
QAing in a data platform project - Kalyan Muthiah
PPTX
Aws steps
PPTX
Getting started with react & redux
PDF
linkTuner Webinar - March 2013
PDF
Sigmoid akka stream
PPTX
ReactiveStream-meetup-Jan102015ppt
PDF
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
PPTX
Top open source tools to consider for web service performance testing
QAing in a data platform project - Kalyan Muthiah
Aws steps
Getting started with react & redux
linkTuner Webinar - March 2013
Sigmoid akka stream
ReactiveStream-meetup-Jan102015ppt
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
Top open source tools to consider for web service performance testing

What's hot (18)

PPTX
Integration with dropbox using mule esb
PPTX
Adopting serverless
PDF
Kube London May 2018
DOCX
Cloud ftp a case study of migrating traditional applications to the cloud
PPTX
Testing soapui
 
PDF
АРТЕМ КОБРІН «Achieve Networking at Scale with a Self-Service Network Solutio...
PPTX
Google apps engine
PPTX
AWS Config Rules - Advanced AWS Meetup
PPTX
AWS Config - Advanced AWS Meetup SF
DOCX
Cloud ftp a case study of migrating traditional applications to the cloud
PPTX
Azuresatpn19 - An Introduction To Azure Data Factory
PPTX
SoapUi using WebServices
PPTX
WebServices using Soap
PPSX
3 pm3 t_we%20-%20setting%20up%20the%20control%20account%20structure
PPTX
Integrating with Aws s3
PDF
Riviera Jug - 20/03/2018 - KSQL
PPTX
Serverless
PDF
How to Optimize GIS Workflows
Integration with dropbox using mule esb
Adopting serverless
Kube London May 2018
Cloud ftp a case study of migrating traditional applications to the cloud
Testing soapui
 
АРТЕМ КОБРІН «Achieve Networking at Scale with a Self-Service Network Solutio...
Google apps engine
AWS Config Rules - Advanced AWS Meetup
AWS Config - Advanced AWS Meetup SF
Cloud ftp a case study of migrating traditional applications to the cloud
Azuresatpn19 - An Introduction To Azure Data Factory
SoapUi using WebServices
WebServices using Soap
3 pm3 t_we%20-%20setting%20up%20the%20control%20account%20structure
Integrating with Aws s3
Riviera Jug - 20/03/2018 - KSQL
Serverless
How to Optimize GIS Workflows
Ad

Similar to Scalable Google Cloud Payroll Project- Presentation (20)

DOCX
Scalable Google Cloud Payroll Project - Paper
PPTX
Unit 5.pptx
PPTX
How to – wrap soap web service around a database
PDF
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
PDF
An Empirical Performance Study of AppEngine and AppScale
PPTX
WebServices using Soapui
PPTX
Testing soapui
PDF
Managing Large Flask Applications On Google App Engine (GAE)
PPTX
Transform-to-Smart-ERP-using-Custom-Mobile-Apps.pptx
PPT
Transform-to-Smart-ERP-using-Custom-Mobile-Apps.pptx (3).ppt
DOCX
Final Report To Executive ManagersXXXXXCCA 625Un
PDF
Shattering The Monolith(s) (Martin Kess, Namely) Kafka Summit SF 2019
PPTX
Azure Functions.pptx
PDF
Project Report
PPTX
Real-World Pulsar Architectural Patterns
PPTX
Evolution of netflix conductor
PDF
Appscale at CLOUDCOMP '09
PDF
An introduction to Workload Modelling for Cloud Applications
PDF
Advanced web application architecture Way2Web
PDF
LOAD BALANCING IN AUTO SCALING-ENABLED CLOUD ENVIRONMENTS
Scalable Google Cloud Payroll Project - Paper
Unit 5.pptx
How to – wrap soap web service around a database
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
An Empirical Performance Study of AppEngine and AppScale
WebServices using Soapui
Testing soapui
Managing Large Flask Applications On Google App Engine (GAE)
Transform-to-Smart-ERP-using-Custom-Mobile-Apps.pptx
Transform-to-Smart-ERP-using-Custom-Mobile-Apps.pptx (3).ppt
Final Report To Executive ManagersXXXXXCCA 625Un
Shattering The Monolith(s) (Martin Kess, Namely) Kafka Summit SF 2019
Azure Functions.pptx
Project Report
Real-World Pulsar Architectural Patterns
Evolution of netflix conductor
Appscale at CLOUDCOMP '09
An introduction to Workload Modelling for Cloud Applications
Advanced web application architecture Way2Web
LOAD BALANCING IN AUTO SCALING-ENABLED CLOUD ENVIRONMENTS
Ad

Recently uploaded (20)

PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PPTX
web development for engineering and engineering
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPTX
Sustainable Sites - Green Building Construction
PPTX
additive manufacturing of ss316l using mig welding
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPT
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
Well-logging-methods_new................
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
Geodesy 1.pptx...............................................
Embodied AI: Ushering in the Next Era of Intelligent Systems
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
Internet of Things (IOT) - A guide to understanding
bas. eng. economics group 4 presentation 1.pptx
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
web development for engineering and engineering
R24 SURVEYING LAB MANUAL for civil enggi
Sustainable Sites - Green Building Construction
additive manufacturing of ss316l using mig welding
Foundation to blockchain - A guide to Blockchain Tech
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
Automation-in-Manufacturing-Chapter-Introduction.pdf
Well-logging-methods_new................
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Geodesy 1.pptx...............................................

Scalable Google Cloud Payroll Project- Presentation

  • 1. A RESTful, Auto-Scaling Payroll API Mike, Joe, Edson
  • 2. Introduction RESTful Auto-Scaling Payroll API Several Custom Components (Application, Translator, Accruals, Delivery) Google Components (Load Balancer, Auto Scaling, Pub/Sub, Cloud Spanner) Users send/receive data as JSON objects through HTTP Requests
  • 4. Load Balancer Distributes our users to various applications that are in service Distributes to a Managed Instance Group Managed Instance Groups are just groups of identical instances built from an Instance Template Instance Template is an image of our Application If changes are made to the Instance Template, these changes are rolled out to all instances in the Managed Instance Group
  • 5. Auto Scaling Monitors the CPU level of our Application Instances If it gets too high, new Application instances are created to help reduce the load When the traffic dies down, these instances are shut off and deleted automatically
  • 6. Pub/Sub Google’s Messaging Service that allows you send and receive messages between independent applications. Allowed for easy communication between all of our components Topics: ● insert-new-company ● insert-new-employee ● insert-timesheets ● calculate-accruals ● paystub-delivery
  • 7. Application Flask Server Routes Publishes To Returns createCompany insert-new-company Response addEmployee insert-new-employee Response submit insert-timesheets Response calculateAccruals calculate-accruals Response deliveryRequest delivery-request Response paystub - Your paystub
  • 8. Translator This component subscribes to 3 topics: ● insert-new-company ● insert-new-employee ● insert-timesheets Parses the JSON message, generates a database insert statement, then inserts the data
  • 9. Accruals Subscribes to calculate-accruals Calculates your pay stub Inserts your pay stub into the database It only calculates your pay when you request it
  • 10. Delivery This instance has one job, to deliver pay stubs to the front-end application Subscribes to delivery-requests Queries the database for an employee’s pay stub Publishes your pay stub to paystub-delivery
  • 11. Cloud Spanner Database Relational Strong Consistency High Availability Automatic Replication Horizontally Scalable SQL-like queries
  • 13. Design Challenges ● Designing our components. What should they do? How do they interact with the rest of our components? ● Constructing the JSON objects our users would be required to send ● Designing the database to work with the JSON ● We tried Google SQL first, but it was not horizontally scalable ● How to scale the Application server and add a Load Balancer? ● Issues with various Kafka libraries led to Google’s Pub/Sub
  • 14. Conclusion Things that would be nice: ● Auto calculate accruals (chron job, every 2 weeks or so) ● Full horizontal scalability (Translator, Delivery, Accruals) ● Find alternative for database cluster component instead of Cloud Spanner ● Costs $9000 per node/year ($0.90/hour for just 1 node) ● Can’t be shut down
  • 15. Demo!