Artsiom Mezin

0
 Advanced issue found
 

Agenda

  • Feature: Scheduling Emails To Send Later
  • Library: PreoccupyJS. Remote Controll web tool

Scheduling sending

Mail.Ru

Objectives

Users' requests :

1) Business users;

2) "Happy Birthday" case;

3) Reminders!

 

Main goal: To increase the number of active business users.

Scheduling sending

Scheduling sending

Plan of attack

  1. Prepare an API specification;
  2. Prepare a test plan;
  3. Change and test the UI kit;
  4. Change and test the "Compose" package;
  5. Change the main project;
  6. Prepare E2E tests for the main project;
  7. Set up monitoring "radars";
  8. Set up A/B testing;
  9. Roll the feature out for the beta testers and corp audience;
  10. Roll the feature out for the percentage of the audience;
  11. Roll the feature out for 100% of users;
 

Scheduling sending

Architecture (Backend)

API frontend

Queue
(Tarantool)

Queue processor

Browser

API

backend

Scheduling sending

Architecture (Backend)

API frontend

Queue
(Tarantool)

Queue processor

Browser

API

backend

Logger

Logger

Logger

Logger

Scheduling sending

Architecture (Frontend)

Compose

Package

Toolkit

Package

JSSDK

Package

Controller

Email Service UI

Scheduling sending

Testing strategy

Scheduling sending

Monitoring

  1. Frontend "radars";
  2. Frontend  errors log;
  3. Backend queue state;
  4. Backend API access/error logs;
 

Scheduling sending

Rolling out nuances

  1. Feature toggling;
  2. A/B testing;
  3. Promotion.
 

PreoccupyJS

Behavox / Open-source

Preoccupy

PreoccupyJS

Objectives

Feature's goal:  To give a user an ability to see a remote screen and to remotely control a web application by using mouse and keyboard for helping and providing support services.

Release criteria:  We want to have a remote control tool within the platform which allow users "to call" each other and to facilitate in daily tasks within the platform by doing:

- Mouse clicking

- Editing texts and filling forms

- Scrolling

PreoccupyJS

Feature's architecture

Host browser

Client browser

MediaStream (WebRTC)

User Events

(WebSocket)

preoccupyJS

preoccupyJS

PreoccupyJS

Library architecture

Host

Client

User Events

(Transport)

Action#

handleEvent

Action#

performEvent

Cursor

DOMHelper

PreoccupyJS

Testing strategy

1. Unit testing for Host, Client, Transport(s), DOM

2. E2E manual testing by using Demo Application

PreoccupyJS

Development

1. Extensible architecture

    1.1. Plugable Actions

    1.2. Exchangeable Transports

2. TypeScript

3. Prettier

4. CI/CD only builds and deployments from the first commit 

PreoccupyJS

CI/CD

1. Testing - Jest

2. Building - TypeScript + Rollup

3. Artefacts - documentation + CHANGELOG.md

4. Version definition

5. Publishing to npm

 

PreoccupyJS

Use cases

PreoccupyJS

Pitfalls

1. e2e testing with Cypress

2. HTMLeditable

Made with Slides.com