SlideShare a Scribd company logo
From Legacy
To a Microservices Architecture
Python, ZCA, Pyramid, Angular 4 & Deis
About me
Ruda Porto Filgueiras
Software Architect at Briefy

http://briefy.co
From Brazil, based in Berlin
Twitter @rudaporto

ruda@briefy.co
The Company
Briefy Team
Creating visual content at scale
INPUT & IMPORT
We define a briefing together with
our Customers. After this we
receive a listing with all items to
shoot Hotels, Flats, Restaurants, etc.
Receive Orders
ASSIGNMENTS
We connect Creatives assigning
them to Orders in the location are
available. Creative schedules the
shoot with the third-party contact and
execute it.
Assign Creative
VALIDATE & PACKAGING
Creative upload assets and we
validate and do QA to make sure we
are following the briefing and specific
requirements. We deliver the content
to Customer: SFTP, GDrive, API.
QA & Delivery
Visual content matter
Embrace the change
Overview
A solution based on three pillars
API CENTRIC
To serve distinct use cases using the
same codebase, Briefy built its
solution around REST APIs.

Web, Mobile and customer integration
were the planned consumers.
MICROSERVICES
Single responsibility and distinct life
cycles for parts of the solution
pointed Briefy to use a micro
services architecture.
EVENTS BASED
Most of the communication between
the services could be done
asynchronously, so an event-based
— with messaging — solution was
implemented.
Code quality and reuse as principles
TESTING
Codebase testing with

Continuous Integration and

Continuous deployment
CODE QUALITY
Style guide and

documentation for

the entire codebase
DEVOPS
Use existing toolset to
minimise devops work.
CODE REUSE
Shared packages/libraries

Build upon existing OSS
codebase
Tech stack
INFRA
Storage: GDrive & S3

Messages: SQS

Cluster: 

Kubernetes 1.7.8

DEIS 2.18
API
Python 3.6.3

Zope Component Architecture

Pyramid 1.9 / Cornice

SQLAlchemy 1.2

Postgresql 9.6
DEV TOOLS
Repo: GitHub

CI: TravisCI

Logging: Logstash

Reporting: Sentry /
NewRelic / Slack
WEB FRONTEND
Angular 4

Typescript

Generic views

Generic Listings

Generic CTAs
Infrastructure
AWS
THREE ENVIRONMENTS
Live: eu-central-1

Staging: us-east-1

Development: eu-west-1
SERVICES
Message routed using SQS

S3 for static data & assets

Kubernets Cluster on EC2

Dies Workflow
Kops
AUTOMATE
Kubernets cluster creation with a single
command line, including bastion and nat

High availability, multiple SDN options
MAINTAIN
Cluster upgrade and change

Export format templates to cloud formation and
terraform
Kubernets
KUBERNETES OVER EC2
One master, n minions
DEIS ON TOP OF KUBERNETES
Workflow solution similar to Heroku PaaS
EC2 WITH AUTO SCALING
T2 and M4 instances.
Deis Workflow
DOCKER
Automatic build and save images
SIMPLE
git push deis master
TWELVE-FACTOR
And also support legacy if necessary
Devops
MONITORING WITH NEWRELIC
Servers and applications
REPORTS ON SLACK / EMAIL
Deploy, errors and alerts posted on
tech channel
AUTOMATION WITH ANSIBLE
AWS and Cloudflare integration
Code
Shared codebase
BRIEFY.COMMON
Events / Queue

Base Models / Mixins

Logging

Workflow
BRIEFY.WS
REST API blueprints

Validation

Error handling
BRIEFY.GDRIVE
Common GDrive actions

Create, Copy, Metadata,
List, Download
BRIEFY.S3
Common S3 actions

Create, Copy, Metadata,
List, Download
briefy.common
QUEUE WORKER
Queue worker to consume
SQS messages and
dispatch
WORKFLOW
Workflow engine to create
solid and secure business
processes
EVENTS
Event firing to internal
component architecture
and to SQS
MODELS
Base mixins and sqlalchemy
models with versioning, local
roles support and polymorphic
types
CACHE
Cache object serialization
on redis with dogpile.cache
briefy.ws
FILTER
Sort and filter listings
automatically based on
model fields
RESOURCES
Base classes to exposure
models as API endpoints:
REST, workflow transitions,
versioning
EVENTS
Object lifecycle events
firing
SCHEMA
Automatic colander schema
generation for validation
and deserialization
SECURITY
Resource factory to
dynamically compute ACLs
based on model workflow and
local roles
Productivity tools
CHECKSTYLE
Linting rules and code style
guide
COOKIECUTTERS
Templates to create new
packages and services
DOCKER IMAGES
Python 3.6.3

Plone 5.0.8

Nginx / Varnish
Services
Core services
MS.LAURE
Automatic quality
assurance and renaming of
assets
LEICA
Workflow and scheduling
solution.

API-based
CHOREOGRAPHER
Events handling and
routing.
ROLLEIFLEX
Authorisation and user
management service.
ALEXANDRIA
Digital Assets management
solution

API-based
Support services
CMS
Content management
backend for Briefy website.

Using Plone CMS.
THUMBOR
Image server handling
automatic cropping, resizing
and image transforms
BRIEFY.SLACK
Service handling Slack
notifications.
BRIEFY.MAIL
Service handling Mail
notifications using Mandrill
as the provider
HOTELS CRM
CRM solution to deal with
Hotels acquisition for the
City Packages initiative.
LEADS
Service handling leads and
quotes coming from
briefy.co website.
SITEMAP
Service that generates a
sitemap.xml for CMS and static
content.

SEO helper
API GATEWAY
Gateway and router
handling public accesses
to Briefy API
Leica: from briefing to assets
The core of Briefy
WORKFLOW & PERMISSIONS
Every model have its own workflow
HUNDREDS OF EVENTS
Workflow transition, task execution, object creation
and update.
DATA MODELS
Customer, Project, Order, Assignment, Creative
and User profiles
Being the scheduling and workflow solution for visual content
creation, Leica is the core of Briefy operations.

Elements of Leica
BRIEFY.FRONTEND
Web application developed with
Angular4, connects to Leica API.

This app has 3 distinct users:
Customer, Creative and Briefy team
member, with distinct permissions.
User Interface
BRIEFY.LEICA
Domain models, permissions,
business logic and API endpoints.

Codebase is well documented and
90% code coverage.
API
LEICA TASKS
Scheduled tasks execute workflow
transitions, generate reports and
post KPIs.

Share the same codebase as
briefy.leica
Tasks
Domain Models
CUSTOMER
Company requesting visual
content creation.
PROJECT
A grouping of orders from the
same customer.

Usually attached to one
contract (or agreement)
ORDER
A content creation request.
When it is not confirmed, it is
called Lead.

Customer oriented.
ASSIGNMENT
A content creation
execution schedule.

Creative oriented.
JOB POOL
Groups available Orders to
be offered to a group of
pre-selected Creatives.
CREATIVE
A visual content creator -
Photographer,
videographer — profile.
CUSTOMER USER
Profile of a user attached to
a Customer.
BRIEFY USER
Profile of a Briefy team
member user.
Managing visual content creation at scale
cost is complex
Confidential
Managing
Visual
Content
Creation Is
Complex
From Events
To Actions
Every action, one event (1)
ARIANA
Assign a creative to an Order
ORDER.WORKFLOW.ASSIGN
2017-07-27 15:46:10.03267
120

Times
Every action, one event (2)
OPHELIE
Validates a Creative
PROFESSIONAL.WORKFLOW.VALIDATE
2017-07-31 15:55:11.436015
213

Times
Events trigger new actions
ASSIGN. IS SCHEDULED
Assignment is scheduled on
Leica, generating an event
EVENT IS ROUTED
Actions are registered to this
event, i.e.: Send email to Creative
EMAIL SENT TO CREATIVE
Using Mandrill, a message is sent
to the Creative
An event on Leica will be sent to Choreographer, there it will be routed to other micro services

to execute new actions.

This flow is asynchronous and all messages are sent using SQS queues.
BRIEFY.LEICA BRIEFY.CHOREOGRAPHER BRIEFY.MAIL
Thank you!
@rudaporto



ruda@briefy.co

+49 176 28607522
Rudá Porto Filgueiras

More Related Content

What's hot (20)

PDF
Webcast: API-Centric Architecture for Building Context-Aware Apps
Apigee | Google Cloud
 
PDF
Cloud native architeturecture
koneruvijay
 
PDF
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
apidays
 
PDF
What’s behind a high quality web API? Ensure your APIs are more than just a ...
Kim Clark
 
PDF
20180123 loq hybrid integration vision
Vincent Verstraete
 
PDF
Developer Experience (DX) as a Fitness Function for Platform Teams
Andy Marks
 
PPTX
Designing APIs and Microservices Using Domain-Driven Design
LaunchAny
 
PDF
IBM Think 2020 Openshift on IBM Z and LinuxONE
Filipe Miranda
 
PDF
API Management For Building Software Applications Powerpoint Presentation Slides
SlideTeam
 
PDF
Where can you use serverless?  How does it relate to APIs, integration and mi...
Kim Clark
 
PDF
Rightway meets your requirements in Flex development
Rightway solution Pvt Ltd
 
PDF
Go Cloud Native with IBM Bluemix Developer Console - GIDS17
Vidyasagar Machupalli
 
PPTX
Cognitive IBM Watson Services for Bluemix Developers
Niklas Heidloff
 
PDF
GlueCon 2018: Are REST APIs Still Relevant Today?
LaunchAny
 
PPT
SAP Business Objects Software development Kit
Sandeep Sharma IIMK Smart City,IoT,Bigdata,Cloud,BI,DW
 
PDF
ETS Summer School - Introduction to Bluemix (July 4th)
Jean-Louis (JL) Marechaux
 
PPTX
Cloud Foundry Marketplace Powered by AppDirect
Platform CF
 
PDF
apidays LIVE Jakarta - API Sandbox: empowering Developer Experience (DX) by F...
apidays
 
PPTX
Migrating from IBM API Connect v5 to v2018
Natalia Kataoka
 
PDF
WaveMaker - Spring Roo - SpringSource Tool Suite - Choosing the right tool fo...
martinlippert
 
Webcast: API-Centric Architecture for Building Context-Aware Apps
Apigee | Google Cloud
 
Cloud native architeturecture
koneruvijay
 
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
apidays
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
Kim Clark
 
20180123 loq hybrid integration vision
Vincent Verstraete
 
Developer Experience (DX) as a Fitness Function for Platform Teams
Andy Marks
 
Designing APIs and Microservices Using Domain-Driven Design
LaunchAny
 
IBM Think 2020 Openshift on IBM Z and LinuxONE
Filipe Miranda
 
API Management For Building Software Applications Powerpoint Presentation Slides
SlideTeam
 
Where can you use serverless?  How does it relate to APIs, integration and mi...
Kim Clark
 
Rightway meets your requirements in Flex development
Rightway solution Pvt Ltd
 
Go Cloud Native with IBM Bluemix Developer Console - GIDS17
Vidyasagar Machupalli
 
Cognitive IBM Watson Services for Bluemix Developers
Niklas Heidloff
 
GlueCon 2018: Are REST APIs Still Relevant Today?
LaunchAny
 
SAP Business Objects Software development Kit
Sandeep Sharma IIMK Smart City,IoT,Bigdata,Cloud,BI,DW
 
ETS Summer School - Introduction to Bluemix (July 4th)
Jean-Louis (JL) Marechaux
 
Cloud Foundry Marketplace Powered by AppDirect
Platform CF
 
apidays LIVE Jakarta - API Sandbox: empowering Developer Experience (DX) by F...
apidays
 
Migrating from IBM API Connect v5 to v2018
Natalia Kataoka
 
WaveMaker - Spring Roo - SpringSource Tool Suite - Choosing the right tool fo...
martinlippert
 

Similar to From Legacy to a Microservices Architecture (20)

PPTX
App Development Evolution: What has changed?
Dev_Events
 
PDF
D-DAY 2015 Hybrid Cloud IBM
DEVOPS D-DAY
 
PPTX
What is Headless and headless 101 at Acquia
Allie Jones
 
PDF
What is Headless and headless 101 at Acquia.pdf
Allie Jones
 
PDF
Cloud Native Patterns with Bluemix Developer Console
Matthew Perrins
 
PDF
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve The Adobe Digital Marketing Community
 
PDF
R-Style Lab Web Development Portfolio
R-Style Lab
 
PDF
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Serdal Kepil
 
PPTX
Cloud computing which explians about cloud topics
swamysaranam06
 
PDF
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Claudia Ring
 
PDF
POST GRADUATE PROGRAM IN CLOUD COMPUTING
MamathaSharma4
 
PPTX
AWS Amplify
AWS Riyadh User Group
 
PPTX
SaaS Add-on Services for Cloud Foundry Powered by AppDirect (Cloud Foundry Su...
VMware Tanzu
 
PDF
Webinar- How to integrate interactive and engaging contents to your Apps?
Rakuten Aquafadas
 
PDF
Build Event-Driven Microservices with Confluent Cloud Workshop #1
confluent
 
PDF
Application Modernization with Code Refactoring
Derya SEZEN
 
PPTX
Demistifying serverless on aws
AWS Riyadh User Group
 
PPTX
DevNet Express - Spark & Tropo API - Lisbon May 2016
Cisco DevNet
 
PDF
Best AWS with DevOps course in Hyderabad
sambaversionit
 
PDF
Developing truly personalised experiences
Exove
 
App Development Evolution: What has changed?
Dev_Events
 
D-DAY 2015 Hybrid Cloud IBM
DEVOPS D-DAY
 
What is Headless and headless 101 at Acquia
Allie Jones
 
What is Headless and headless 101 at Acquia.pdf
Allie Jones
 
Cloud Native Patterns with Bluemix Developer Console
Matthew Perrins
 
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve The Adobe Digital Marketing Community
 
R-Style Lab Web Development Portfolio
R-Style Lab
 
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Serdal Kepil
 
Cloud computing which explians about cloud topics
swamysaranam06
 
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Claudia Ring
 
POST GRADUATE PROGRAM IN CLOUD COMPUTING
MamathaSharma4
 
SaaS Add-on Services for Cloud Foundry Powered by AppDirect (Cloud Foundry Su...
VMware Tanzu
 
Webinar- How to integrate interactive and engaging contents to your Apps?
Rakuten Aquafadas
 
Build Event-Driven Microservices with Confluent Cloud Workshop #1
confluent
 
Application Modernization with Code Refactoring
Derya SEZEN
 
Demistifying serverless on aws
AWS Riyadh User Group
 
DevNet Express - Spark & Tropo API - Lisbon May 2016
Cisco DevNet
 
Best AWS with DevOps course in Hyderabad
sambaversionit
 
Developing truly personalised experiences
Exove
 
Ad

Recently uploaded (20)

PPTX
Day2 B2 Best.pptx
helenjenefa1
 
PPTX
Solar Thermal Energy System Seminar.pptx
Gpc Purapuza
 
PDF
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
DOC
MRRS Strength and Durability of Concrete
CivilMythili
 
PPTX
MPMC_Module-2 xxxxxxxxxxxxxxxxxxxxx.pptx
ShivanshVaidya5
 
PPTX
Green Building & Energy Conservation ppt
Sagar Sarangi
 
PDF
MAD Unit - 1 Introduction of Android IT Department
JappanMavani
 
PDF
Ethics and Trustworthy AI in Healthcare – Governing Sensitive Data, Profiling...
AlqualsaDIResearchGr
 
PPTX
Pharmaceuticals and fine chemicals.pptxx
jaypa242004
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PDF
Zilliz Cloud Demo for performance and scale
Zilliz
 
PDF
monopile foundation seminar topic for civil engineering students
Ahina5
 
PPTX
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
PDF
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
PPTX
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
PPTX
Hashing Introduction , hash functions and techniques
sailajam21
 
DOCX
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
PDF
GTU Civil Engineering All Semester Syllabus.pdf
Vimal Bhojani
 
PDF
Biomechanics of Gait: Engineering Solutions for Rehabilitation (www.kiu.ac.ug)
publication11
 
PDF
Pressure Measurement training for engineers and Technicians
AIESOLUTIONS
 
Day2 B2 Best.pptx
helenjenefa1
 
Solar Thermal Energy System Seminar.pptx
Gpc Purapuza
 
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
MRRS Strength and Durability of Concrete
CivilMythili
 
MPMC_Module-2 xxxxxxxxxxxxxxxxxxxxx.pptx
ShivanshVaidya5
 
Green Building & Energy Conservation ppt
Sagar Sarangi
 
MAD Unit - 1 Introduction of Android IT Department
JappanMavani
 
Ethics and Trustworthy AI in Healthcare – Governing Sensitive Data, Profiling...
AlqualsaDIResearchGr
 
Pharmaceuticals and fine chemicals.pptxx
jaypa242004
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
Zilliz Cloud Demo for performance and scale
Zilliz
 
monopile foundation seminar topic for civil engineering students
Ahina5
 
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
Hashing Introduction , hash functions and techniques
sailajam21
 
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
GTU Civil Engineering All Semester Syllabus.pdf
Vimal Bhojani
 
Biomechanics of Gait: Engineering Solutions for Rehabilitation (www.kiu.ac.ug)
publication11
 
Pressure Measurement training for engineers and Technicians
AIESOLUTIONS
 
Ad

From Legacy to a Microservices Architecture

  • 1. From Legacy To a Microservices Architecture Python, ZCA, Pyramid, Angular 4 & Deis
  • 2. About me Ruda Porto Filgueiras Software Architect at Briefy
 http://briefy.co From Brazil, based in Berlin Twitter @rudaporto
 [email protected]
  • 5. Creating visual content at scale INPUT & IMPORT We define a briefing together with our Customers. After this we receive a listing with all items to shoot Hotels, Flats, Restaurants, etc. Receive Orders ASSIGNMENTS We connect Creatives assigning them to Orders in the location are available. Creative schedules the shoot with the third-party contact and execute it. Assign Creative VALIDATE & PACKAGING Creative upload assets and we validate and do QA to make sure we are following the briefing and specific requirements. We deliver the content to Customer: SFTP, GDrive, API. QA & Delivery
  • 9. A solution based on three pillars API CENTRIC To serve distinct use cases using the same codebase, Briefy built its solution around REST APIs.
 Web, Mobile and customer integration were the planned consumers. MICROSERVICES Single responsibility and distinct life cycles for parts of the solution pointed Briefy to use a micro services architecture. EVENTS BASED Most of the communication between the services could be done asynchronously, so an event-based — with messaging — solution was implemented.
  • 10. Code quality and reuse as principles TESTING Codebase testing with
 Continuous Integration and
 Continuous deployment CODE QUALITY Style guide and
 documentation for
 the entire codebase DEVOPS Use existing toolset to minimise devops work. CODE REUSE Shared packages/libraries
 Build upon existing OSS codebase
  • 11. Tech stack INFRA Storage: GDrive & S3
 Messages: SQS
 Cluster: 
 Kubernetes 1.7.8
 DEIS 2.18 API Python 3.6.3
 Zope Component Architecture
 Pyramid 1.9 / Cornice
 SQLAlchemy 1.2
 Postgresql 9.6 DEV TOOLS Repo: GitHub
 CI: TravisCI
 Logging: Logstash
 Reporting: Sentry / NewRelic / Slack WEB FRONTEND Angular 4
 Typescript
 Generic views
 Generic Listings
 Generic CTAs
  • 13. AWS THREE ENVIRONMENTS Live: eu-central-1
 Staging: us-east-1
 Development: eu-west-1 SERVICES Message routed using SQS
 S3 for static data & assets
 Kubernets Cluster on EC2
 Dies Workflow
  • 14. Kops AUTOMATE Kubernets cluster creation with a single command line, including bastion and nat
 High availability, multiple SDN options MAINTAIN Cluster upgrade and change
 Export format templates to cloud formation and terraform
  • 15. Kubernets KUBERNETES OVER EC2 One master, n minions DEIS ON TOP OF KUBERNETES Workflow solution similar to Heroku PaaS EC2 WITH AUTO SCALING T2 and M4 instances.
  • 16. Deis Workflow DOCKER Automatic build and save images SIMPLE git push deis master TWELVE-FACTOR And also support legacy if necessary
  • 17. Devops MONITORING WITH NEWRELIC Servers and applications REPORTS ON SLACK / EMAIL Deploy, errors and alerts posted on tech channel AUTOMATION WITH ANSIBLE AWS and Cloudflare integration
  • 18. Code
  • 19. Shared codebase BRIEFY.COMMON Events / Queue
 Base Models / Mixins
 Logging
 Workflow BRIEFY.WS REST API blueprints
 Validation
 Error handling BRIEFY.GDRIVE Common GDrive actions
 Create, Copy, Metadata, List, Download BRIEFY.S3 Common S3 actions
 Create, Copy, Metadata, List, Download
  • 20. briefy.common QUEUE WORKER Queue worker to consume SQS messages and dispatch WORKFLOW Workflow engine to create solid and secure business processes EVENTS Event firing to internal component architecture and to SQS MODELS Base mixins and sqlalchemy models with versioning, local roles support and polymorphic types CACHE Cache object serialization on redis with dogpile.cache
  • 21. briefy.ws FILTER Sort and filter listings automatically based on model fields RESOURCES Base classes to exposure models as API endpoints: REST, workflow transitions, versioning EVENTS Object lifecycle events firing SCHEMA Automatic colander schema generation for validation and deserialization SECURITY Resource factory to dynamically compute ACLs based on model workflow and local roles
  • 22. Productivity tools CHECKSTYLE Linting rules and code style guide COOKIECUTTERS Templates to create new packages and services DOCKER IMAGES Python 3.6.3
 Plone 5.0.8
 Nginx / Varnish
  • 24. Core services MS.LAURE Automatic quality assurance and renaming of assets LEICA Workflow and scheduling solution.
 API-based CHOREOGRAPHER Events handling and routing. ROLLEIFLEX Authorisation and user management service. ALEXANDRIA Digital Assets management solution
 API-based
  • 25. Support services CMS Content management backend for Briefy website.
 Using Plone CMS. THUMBOR Image server handling automatic cropping, resizing and image transforms BRIEFY.SLACK Service handling Slack notifications. BRIEFY.MAIL Service handling Mail notifications using Mandrill as the provider HOTELS CRM CRM solution to deal with Hotels acquisition for the City Packages initiative. LEADS Service handling leads and quotes coming from briefy.co website. SITEMAP Service that generates a sitemap.xml for CMS and static content.
 SEO helper API GATEWAY Gateway and router handling public accesses to Briefy API
  • 27. The core of Briefy WORKFLOW & PERMISSIONS Every model have its own workflow HUNDREDS OF EVENTS Workflow transition, task execution, object creation and update. DATA MODELS Customer, Project, Order, Assignment, Creative and User profiles Being the scheduling and workflow solution for visual content creation, Leica is the core of Briefy operations.

  • 28. Elements of Leica BRIEFY.FRONTEND Web application developed with Angular4, connects to Leica API.
 This app has 3 distinct users: Customer, Creative and Briefy team member, with distinct permissions. User Interface BRIEFY.LEICA Domain models, permissions, business logic and API endpoints.
 Codebase is well documented and 90% code coverage. API LEICA TASKS Scheduled tasks execute workflow transitions, generate reports and post KPIs.
 Share the same codebase as briefy.leica Tasks
  • 29. Domain Models CUSTOMER Company requesting visual content creation. PROJECT A grouping of orders from the same customer.
 Usually attached to one contract (or agreement) ORDER A content creation request. When it is not confirmed, it is called Lead.
 Customer oriented. ASSIGNMENT A content creation execution schedule.
 Creative oriented. JOB POOL Groups available Orders to be offered to a group of pre-selected Creatives. CREATIVE A visual content creator - Photographer, videographer — profile. CUSTOMER USER Profile of a user attached to a Customer. BRIEFY USER Profile of a Briefy team member user.
  • 30. Managing visual content creation at scale cost is complex Confidential Managing Visual Content Creation Is Complex
  • 32. Every action, one event (1) ARIANA Assign a creative to an Order ORDER.WORKFLOW.ASSIGN 2017-07-27 15:46:10.03267 120
 Times
  • 33. Every action, one event (2) OPHELIE Validates a Creative PROFESSIONAL.WORKFLOW.VALIDATE 2017-07-31 15:55:11.436015 213
 Times
  • 34. Events trigger new actions ASSIGN. IS SCHEDULED Assignment is scheduled on Leica, generating an event EVENT IS ROUTED Actions are registered to this event, i.e.: Send email to Creative EMAIL SENT TO CREATIVE Using Mandrill, a message is sent to the Creative An event on Leica will be sent to Choreographer, there it will be routed to other micro services
 to execute new actions.
 This flow is asynchronous and all messages are sent using SQS queues. BRIEFY.LEICA BRIEFY.CHOREOGRAPHER BRIEFY.MAIL