Modern Web Application Development

Who am I?

  • Siberian
  • Web developer with 10+ year of experience
  • Python enthusiast (6+ years)
  • Lead Full Stack programmer at

Aleksey Rembish

Agenda

Agenda: 3 Sklik webs

Advertiser's web
(internally userweb)

Agenda: 3 Sklik webs

Partner's web

Agenda: 3 Sklik webs

Administrator's web
(internally adminweb)

Concept #1 (~2008-2009)

Technologies:

TEng, JAK, WebPublisher, MetaServer

Development vs Production:

Structure:

  • Mono repository
  • Same code for all webs!
  • 3x Debian packages for Python codes
  • 3x Debian packages for static files

2.4

Concept #2 (~2012)

Concept #3 (~2013)

  • HTML debian packages
  • Database splitted into multimaster cluster

2.6

Concept #3.5 (~early 2014)

Project structure changes:

  • Webs repository separation
  • Proxies repository separation
  • Automatic integration tests

Technology changes:

2.7

Concept #4 (2014)

Concept #5: Too cloudy

Concept #6: Split the Monolith

  • UserWeb and AdminWeb repository separation
  • Administrator's access rework

Concept #7: Frontend Rush

  • CodeReview as Merge Request
  • Code Quality checks
  • End-to-End tests
  • Local NPM repo

Concept #8: OpenSource it!

  • Continuous integration pipelines
  • Dev feature test instances

Concept #9: We need more monitoring!

3.5

  • Project bootstrapping
  • Automatic master/staging deployments
  • Production deployment using MR link

Concept #10: Next?

  • Type hints in JS and Python
  • Canary release without any RT ticket
  • More monitoring
  • More automatic tests after push / merge
  • Technology deprecation
  • Legacy code deprecation
  • More async code
  • Better newbie cold starts
  • ...?

There are many books "How to create a great app", but only masters know how to modernize existing one.

Join             master race

AR, 2017

Made with Slides.com