---
# System prepended metadata

title: Case

---

# Case

Imagine that you are joining as a Tech Lead at Zehitomo.

Your first mission is to oversee the development of a new functionality whose release date is set to 3 months from now. Please describe the process, system and tech architecture and collaboration with stakeholders from now to the release.

## Requirements
- Administration interface for service providers (eg. flower shop, coiffeur, etc.)
    - Create/edit/publish/disable service opening
    - Assignes budget for advertisement campaings (=> improving ranking position in service search result page)
    - Track requests/revenue and ad campaigns related to service openings
- Please imagine that you will develop an independent functionality (=> development from scratch), but the functionality might rely on existing APIs

## Organization & team structure
- Sales & Growth organization
    - Growth team
        - Strategy for growing the business
    - Success team
        - Ineracts with existing customers
- Product & engineering organization
    - Manager
        - Allocates resources & budget, hiring, people management
    - Product Owner
        - Translates product roadmap into milestones/deliverables
        - Prioritizes deliverables
    - Tech lead (you)
        - Responsible for all tech related decisions (incl. dev process)
    - Domain expert (SEO, B2B business)
        - Gives advice/help related to domain knowledge
        - Establish 
    - Technical Product manager
        - Translate requirements
    - Engineers
        - 5 Backend and 3 Frontend engineers
        - Work in small teams (3-4 person) based on assigned KPI or project
    - QA
        - Validate release, testing


## Tech stack

- Node.js
- Mongo DB
- React
- AWS

# Solution

- Get the requirements more fleshed out from the sales & growth team, and product owner.
- Microservice based design (could also be serverless but...)
- Design by contract for better work devision.
- Agile process.

## System architecture

- Kubernetes vs serverless
- I will go with Kubernetes because that is to my mind to be the most long-term stable solution in the cloud environment, as well as the most portable one.
- Amazon EKS.
- Application communicates with front end using GrahQL.
- Application uses various REST/RPC microservics on the back end for work division and scalability.
- Split between ad campain microservice, a payment tracking service (if taht doesn't already exist, otherwise extend that) and service opening microservcie, and an app to centralize this.

## Process/Schedule/Milestones

- Determine the requirements in more detail, meetings between growth team & product owner
- In paralell start design by contract beteween front-end and back end, and between back end developers by desigin the machine readable data contracts.
- Font end can generate their mock back end servers based on the contract.
- Back end can generate GraphQL API or REST API based on the contacts.
- Once details are more clear update machine readable contracts.
-  


