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

From idea to production with serverless architecture

From idea to production with serverless architecture

JEEConf, 18.05.2018

Kirill Zotin

May 18, 2018
Tweet

More Decks by Kirill Zotin

Other Decks in Programming

Transcript

  1. Serverless is... 4 Serverless architectures refer to applications that significantly

    depend on third-party services ("BaaS") or on custom code that's run in ephemeral containers ("FaaS") © Martin Fowler
  2. 5

  3. Serverless is... - Pay for consumption, idle is free No

    servers to provision or manage ✓ 1 7 Fault tolerance Automatic scaling 2 3 ✓ 4 ✓ ✓ Using serverless.com 6 B2D 5 ✓
  4. 8 10+ years in IT: • Engineer • Team leader

    • Engineering Manager About myself...
  5. THE TEAM Highly agile, international, virtual team Skills/experience: mobile apps,

    gamification, behavioral psychology, Android development, infrastructure, start-ups, scaling, business strategy, marketing, community building, product development, learning/education, international solutions, change management, agile methodologies. A team that shares a purpose, solves problems, gets things done Pedro Mêdas Harald Paul Mathias Daus Iain Thackrah Thomas Kuryura Paula Cassin Kirill Zotin Jurgen Appelo 9
  6. THE STACKOVERFLOW OF AGILE PRACTICES People want to find and

    share answers to problems. People want to find and share guidance to solutions. 10
  7. PRODUCT Data (proprietary, our IP) Community (professionals) Gamification (using, rating,

    sharing) Content (user-owned practices & work guides) Platform Informing, recommending Tracking, measuring Creating, using Playing, socializing 11
  8. LET’S RECAP Phase 1 Phase 2 Phase 3 • Mobile

    App • Content Delivery APIs • Content Management UI • Backend logic • Monitoring & crash reporting • Usage analytics ✓ 16
  9. export const weeklySendNewsletter = functions .pubsub.topic('weekly-tick') .onPublish(() => { const

    data = await fetchData() const report = await renderReport() return Promise.all([ store(report), sendEmail(getEmailConfig(), report), logEvent() ]) }
  10. export const weeklySendNewsletter = functions .pubsub.topic('weekly-tick') .onPublish(() => { const

    data = await fetchData() const report = await renderReport() return Promise.all([ store(report), sendEmail(getEmailConfig(), report), logEvent() ]) } “RabbitMQ”
  11. LET’S RECAP Phase 1 Phase 2 Phase 3 • Mobile

    App • Content Delivery APIs • Content Management UI • Backend logic • Monitoring & crash reporting • Analytics • Data warehouse • BI Dashboards • Search indexing • CRM integration • Emails • Slack messages • Monitoring • Regular E2E tests ✓ 30
  12. 35 → Cloud Functions FaaS → AppEngine Flex PaaS →

    Digital Ocean IaaS Web App hosting
  13. Play by vendor rules 36 • Access DB from frontend

    • Different security patterns • Service updates
  14. 43 Minimum viable documentation Always up-to date: • Current state

    ◦ Overview ◦ DB structure doc • Evolution history ◦ ADR
  15. 44 Architecture decision records Template • Title • Status •

    Decision • Context • Consequences 1 page max Not for discussions
  16. 47 Summary No deep specialization needed Toolset not mature Works

    OOTB Cheaper in most cases Practices are just emerging Expect surprises :)