SlideShare a Scribd company logo
GoMake
Jonathan Barton
@jellyfishtree
- Full Stack Javascript Engineer
- Co-Founder of goMake
@gomaketeam #GoMake <something epic>
AgendaAgenda
1.
Overview
2.
API
3.
Q & A
Gluecon 2017 - GoMake | Flying Dreams: Real-Time Communication from the Edge of Space
From bootstrapped launch to scal-
able education framework
Our Narrative
Neha
API Sorceress
Rick
Minister of Containers
Jonathan
Hardware Czar
Nick
Content/ Media Baron
Matt
Design Deacon
Jacob
App Apothecary
Morris
Infrastructure Warlock
Our Team
Container
Gluecon 2017 - GoMake | Flying Dreams: Real-Time Communication from the Edge of Space
goMake Mobile App
GoMake API Platform
Video
https://www.youtube.com/watch?v=tzmeQJuCVUo
Students learn by understanding
the story behind their interactions
with science, math and technology
Framework for An
Emergent Narrative
Holyoke Codes
@holyokecodes
https://www.patreon.com/gomake
@gomaketeam
Neha Abrol
@abrol_neha
Senior Software Engineer
API Sorceress @GoMake
Agenda
1.
Overview
API
2.
Architecture
3.
Infrastructure
4.
Testing
5.
Deployment
&
Migrations
6.
Code Quality
7.
Challenges
8.
Data Security
Overview
• The goMake API provides flight related information and
real time telemetry for a goMake high altitude balloon
and other project launches.
Architecture
SendBird
Chat API
Auth0
Authentication
API
Middleware for
Express Validation
request headers etc.
Mongoose
ODM
Payload has a Hex String
Balloon
Latitude
Longitude
Altitude
Temperature
Modem
Imei#
Web Server
Express Server
Base don Node JS
Requestw
ith
Im
ei#
and
LaunchD
ate
Payload
w
ith
Im
ei#
&
Launchdate
Callback
U
RL
Callback URL sent
every 2 minutes
posting the flight’s
Telemetry
Request
Satellite Modem
RockBlock
DB
Mongo
DB
Response
Infrastructure - Overview
• Circle CI : Continuous Deployment Pipeline
• Kubernetes on Google Cloud : Microservices
Architecture
Infrastructure – Rolling Updates
• Push API code : Container registry will be updated
with the image with unstable tag.
• Add integration tests : Circle CI pushes the image to
GCR. The test script runs the test against API’s unstable
image that was created above.
• Promote API tag : If tests pass, run the promotion
script to promote API image tag from unstable to latest
. This ensures code with failing tests is not deployed.
• Deploy build : Run script to deploy the circleCi build
generated and tested above, using the circleCi build
number.
Infrastructure – API Continuous Deployment
Pipeline
Infrastructure – Integration Tests and API
Promotion
Infrastructure - Choice Considerations
● Flexibility :
○ Very fine control of compute usage over time.
○ Scale up and down based on requirements.
● Cost : Competitive rates for compute and storage.
● Availability : Relatively easy to deploy highly-available services.
● Simplicity : Straight-forward API with command line interface and
Web UI.
● Portability : Containers run the same in all environment; bring
dependencies with them.
Testing & Data Setup
Unit Tests
• mongoose-mock -
mocking mongoose
connection.
• sinon-mongoose –
chained mongoose model
methods.
• sinon-stub-promise –
promises.
Integration Tests
• http-status - http
responses from endpoints.
• supertest-as-promise -
mocking requests.
Data setup-Mock Data
• gomake-mock-data –
repository published as an
npm package to provide
mock data.
Data setup-Seeders
• gulp populate - “populate”
task to copy data from json
files to mongoDb
collection.
npm package gulp-mongo
populator used.
Deployment and migrations
Deployment
• Kubernetes
• gomake-deploy has all
the scripts that take care
of deployment needs.
• Slack integrations have
been created to provide
deployment updates and
run gomake-deploy jobs.
Migrations
• gomake-api-migrations
has the migrations
needed for the api with
both up/down migrations
• Docker image takes care
of executing the
migrations on the
kubernetes cluster.
Code Quality
• We use code beat to measure our code quality . Slack
integration has been added and whenever a new PR is
created it calls out the new GPA and modules that
negatively affect it.
https://codebeat.co
Challenges
• Challenge : No information from satellite during course of the flight.
• Solution : To give some kind of predictive navigation information based
on previous flights‘ data. (Future implementation).
• Challenge : Relationship between flight and telemetry, if same satellite
modem is used.
• Solution : Have flight launch date with IMEI number as a unique
identifier.
• Challenge : SSH’ ing into the container on an environment and editing
code and seeing changes in real time for debugging purposes
especially when deployment process was not as fast as we have it today.
• Solution : Docker commit containerId and Docker push image image:
tag came to the rescue after SSH’ing and making changes online .
Stopping the existing container created a new container with the
changes. No need to run a time consuming circleCi build to debug
issues.
Data Security
• JWT Token : transferring claims.
• Auth0 API : authentication and authorization. All user
related info is going to be stored in Auth0 database.
• SendBird Chat : Each user will get its own chat key
which will be requested by the app and will be
generated by the API
Thank You!
Special Thanks to Lorinda Brandon, Kim and Eric Norlin,
and the entire GoMake Family.
https://www.patreon.com/gomake

More Related Content

PDF
Fluent 2018: Measuring What Matters
PPTX
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
PDF
Fluent 2018: When third parties stop being polite... and start getting real
PDF
Managing traffic routing with istio and envoy workshop
PDF
Resilient and Adaptable Systems with Cloud Native APIs
PDF
Full-Stack Development with Spring Boot and VueJS
PDF
Spring Boot—Production Boost
PDF
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Fluent 2018: Measuring What Matters
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Fluent 2018: When third parties stop being polite... and start getting real
Managing traffic routing with istio and envoy workshop
Resilient and Adaptable Systems with Cloud Native APIs
Full-Stack Development with Spring Boot and VueJS
Spring Boot—Production Boost
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...

What's hot (18)

PPTX
Four Practices to Fix Your Top .NET Performance Problems
PDF
Flux is incubating + the road ahead
PDF
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
PDF
Spring GraphQL
PPTX
Programming proxies to do what we need so we don't have to talk to the networ...
PDF
Cloud-Native Streaming and Event-Driven Microservices
PDF
Benchmarking Service Meshes - CNCF Networking WG
PDF
Advanced Spring Boot with Consul
PDF
A Series of Fortunate Events: Building an Operator in Java
PPTX
Meet with Meteor
PDF
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
PPTX
Containerizing ContentBox CMS
PDF
How to Build a Micro-Application using Single-Spa
PPTX
Meteor intro-2015
PPTX
Building a Web Frontend with Microservices and NGINX Plus
PDF
Angular meteor for angular devs
PPTX
How Hootsuite Manages Its Growing Microservice Landscape
PDF
Fundamental Spring Boot: Keep it Simple, Get it Right, Be Productive and Have...
Four Practices to Fix Your Top .NET Performance Problems
Flux is incubating + the road ahead
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Spring GraphQL
Programming proxies to do what we need so we don't have to talk to the networ...
Cloud-Native Streaming and Event-Driven Microservices
Benchmarking Service Meshes - CNCF Networking WG
Advanced Spring Boot with Consul
A Series of Fortunate Events: Building an Operator in Java
Meet with Meteor
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Containerizing ContentBox CMS
How to Build a Micro-Application using Single-Spa
Meteor intro-2015
Building a Web Frontend with Microservices and NGINX Plus
Angular meteor for angular devs
How Hootsuite Manages Its Growing Microservice Landscape
Fundamental Spring Boot: Keep it Simple, Get it Right, Be Productive and Have...
Ad

Similar to Gluecon 2017 - GoMake | Flying Dreams: Real-Time Communication from the Edge of Space (20)

PDF
Big Data And HTML5 (DevCon TLV 2012)
PDF
Hybrid application development
KEY
Introduction to Google App Engine
PPTX
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
PDF
Tools. Techniques. Trouble?
PDF
Doug Sillars on App Optimization
PDF
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
DOCX
Ankit Vakil (2)
PDF
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
PPTX
DevOps for AI Apps
PDF
_Python Ireland Meetup - Serverless ML - Dowling.pdf
PDF
Web Leaps Forward
PPTX
Preparing_for_PCA_Workbook.pptx
PPTX
Is your mobile app up to speed softwaresymposium
PDF
Laying the Foundation for Ionic Platform Insights on Spark
PPTX
How to build a SaaS solution in 60 days
PDF
IBM Blockchain Platform - Architectural Good Practices v1.0
PDF
The Web, After HTML5
PDF
DevOps: Find Solutions, Not More Defects
PPTX
Micro Service Architecture
Big Data And HTML5 (DevCon TLV 2012)
Hybrid application development
Introduction to Google App Engine
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
Tools. Techniques. Trouble?
Doug Sillars on App Optimization
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Ankit Vakil (2)
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
DevOps for AI Apps
_Python Ireland Meetup - Serverless ML - Dowling.pdf
Web Leaps Forward
Preparing_for_PCA_Workbook.pptx
Is your mobile app up to speed softwaresymposium
Laying the Foundation for Ionic Platform Insights on Spark
How to build a SaaS solution in 60 days
IBM Blockchain Platform - Architectural Good Practices v1.0
The Web, After HTML5
DevOps: Find Solutions, Not More Defects
Micro Service Architecture
Ad

Recently uploaded (20)

PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
Insiders guide to clinical Medicine.pdf
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
Cell Structure & Organelles in detailed.
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
01-Introduction-to-Information-Management.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
Pre independence Education in Inndia.pdf
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
Business Ethics Teaching Materials for college
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Renaissance Architecture: A Journey from Faith to Humanism
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
O5-L3 Freight Transport Ops (International) V1.pdf
Insiders guide to clinical Medicine.pdf
102 student loan defaulters named and shamed – Is someone you know on the list?
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
STATICS OF THE RIGID BODIES Hibbelers.pdf
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Cell Structure & Organelles in detailed.
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
01-Introduction-to-Information-Management.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Pre independence Education in Inndia.pdf
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Business Ethics Teaching Materials for college
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...

Gluecon 2017 - GoMake | Flying Dreams: Real-Time Communication from the Edge of Space

  • 2. Jonathan Barton @jellyfishtree - Full Stack Javascript Engineer - Co-Founder of goMake @gomaketeam #GoMake <something epic>
  • 5. From bootstrapped launch to scal- able education framework Our Narrative
  • 6. Neha API Sorceress Rick Minister of Containers Jonathan Hardware Czar Nick Content/ Media Baron Matt Design Deacon Jacob App Apothecary Morris Infrastructure Warlock Our Team
  • 12. Students learn by understanding the story behind their interactions with science, math and technology Framework for An Emergent Narrative
  • 15. Neha Abrol @abrol_neha Senior Software Engineer API Sorceress @GoMake
  • 17. Overview • The goMake API provides flight related information and real time telemetry for a goMake high altitude balloon and other project launches.
  • 18. Architecture SendBird Chat API Auth0 Authentication API Middleware for Express Validation request headers etc. Mongoose ODM Payload has a Hex String Balloon Latitude Longitude Altitude Temperature Modem Imei# Web Server Express Server Base don Node JS Requestw ith Im ei# and LaunchD ate Payload w ith Im ei# & Launchdate Callback U RL Callback URL sent every 2 minutes posting the flight’s Telemetry Request Satellite Modem RockBlock DB Mongo DB Response
  • 19. Infrastructure - Overview • Circle CI : Continuous Deployment Pipeline • Kubernetes on Google Cloud : Microservices Architecture
  • 20. Infrastructure – Rolling Updates • Push API code : Container registry will be updated with the image with unstable tag. • Add integration tests : Circle CI pushes the image to GCR. The test script runs the test against API’s unstable image that was created above. • Promote API tag : If tests pass, run the promotion script to promote API image tag from unstable to latest . This ensures code with failing tests is not deployed. • Deploy build : Run script to deploy the circleCi build generated and tested above, using the circleCi build number.
  • 21. Infrastructure – API Continuous Deployment Pipeline
  • 22. Infrastructure – Integration Tests and API Promotion
  • 23. Infrastructure - Choice Considerations ● Flexibility : ○ Very fine control of compute usage over time. ○ Scale up and down based on requirements. ● Cost : Competitive rates for compute and storage. ● Availability : Relatively easy to deploy highly-available services. ● Simplicity : Straight-forward API with command line interface and Web UI. ● Portability : Containers run the same in all environment; bring dependencies with them.
  • 24. Testing & Data Setup Unit Tests • mongoose-mock - mocking mongoose connection. • sinon-mongoose – chained mongoose model methods. • sinon-stub-promise – promises. Integration Tests • http-status - http responses from endpoints. • supertest-as-promise - mocking requests. Data setup-Mock Data • gomake-mock-data – repository published as an npm package to provide mock data. Data setup-Seeders • gulp populate - “populate” task to copy data from json files to mongoDb collection. npm package gulp-mongo populator used.
  • 25. Deployment and migrations Deployment • Kubernetes • gomake-deploy has all the scripts that take care of deployment needs. • Slack integrations have been created to provide deployment updates and run gomake-deploy jobs. Migrations • gomake-api-migrations has the migrations needed for the api with both up/down migrations • Docker image takes care of executing the migrations on the kubernetes cluster.
  • 26. Code Quality • We use code beat to measure our code quality . Slack integration has been added and whenever a new PR is created it calls out the new GPA and modules that negatively affect it. https://codebeat.co
  • 27. Challenges • Challenge : No information from satellite during course of the flight. • Solution : To give some kind of predictive navigation information based on previous flights‘ data. (Future implementation). • Challenge : Relationship between flight and telemetry, if same satellite modem is used. • Solution : Have flight launch date with IMEI number as a unique identifier. • Challenge : SSH’ ing into the container on an environment and editing code and seeing changes in real time for debugging purposes especially when deployment process was not as fast as we have it today. • Solution : Docker commit containerId and Docker push image image: tag came to the rescue after SSH’ing and making changes online . Stopping the existing container created a new container with the changes. No need to run a time consuming circleCi build to debug issues.
  • 28. Data Security • JWT Token : transferring claims. • Auth0 API : authentication and authorization. All user related info is going to be stored in Auth0 database. • SendBird Chat : Each user will get its own chat key which will be requested by the app and will be generated by the API
  • 29. Thank You! Special Thanks to Lorinda Brandon, Kim and Eric Norlin, and the entire GoMake Family.