Skip to content
Devfest 2020
Devfest · October 17, 2020

Modern Approaches to Software Development

With examples from a large fintech

/ Modern Approaches to Software Development · Devfest 2020

Slide contents

  1. 1. Modern Approaches to Software Development

    With examples from a large fintech

  2. 2. Agenda

    Modern development layers

    Brute force: fit and failure

    Design: requirements, domain, Clean Architecture

    Storage, NoSQL, microservices

    Delivery, infra, QA, security

  3. 3. 01. Brute-Force Development

    When it works and when it breaks

  4. 4. Idea → Dev → Deploy

    Linear cycle and pain

    Business wants the neighbor's, only better

    Requirements outrun code

    Deploy stays an event

    Few tests, high prod risk

  5. 5. When brute force fits

    You don't always need Clean Architecture

    Prototypes and MVPs, 2–4 weeks

    RnD experiments with hypotheses

    Automation scripts, one-off tasks, promo pages

    Maintaining beats throwing it away

  6. 6. 02. Development with Design

    When investments in design pay off

  7. 7. What design adds

    Layers of meaning

    Requirements gathering and formalization

    Use cases

    Domain model and language

    Patterns and ADRs

  8. 8. Clean Architecture layers

    Dependencies point inward

    Entities — business objects and invariants

    Use Cases — application business rules

    Interface Adapters — controllers, presenters

    Frameworks & Drivers + Dependency Rule

  9. 9. 03. Data Evolution

    From file system to NoSQL and Data Mesh

  10. 10. A new class of tasks, a new store

  11. 11. NoSQL families

    Engine per access pattern

    Key-Value — fast lookup

    Column-Family — wide rows

    Document — flexible schema

    Graph — relationships and traversals

  12. 12. 04. System Architecture

    Monolith → SOA → Microservices

  13. 13. Monolith → microservices

    Solutions create complexity

    Monolith — simple deploy

    SOA — heavy middleware

    Microservices — harder ops

    DDD sets service boundaries

  14. 14. 05. Delivery and Infrastructure

    From FTP to DevOps and IaaC

  15. 15. From manual deploys to CI/CD

  16. 16. Infrastructure becomes a product

  17. 17. 06. Quality, Security, Data

    What you can't skip

  18. 18. Shift-left + test pyramid

    Build quality in

    Unit tests — fast pyramid base

    Integration / contract — service boundaries

    E2E — few but critical scenarios

    Production testing: canary, shadow, chaos

  19. 19. Security in CI

    DevSecOps by design

    SAST / DAST in CI

    SCA — dependencies and CVEs

    Secrets — Vault, KMS

    Threat modeling + least privilege

  20. 20. Data becomes a product

    From Warehouse to Data Mesh

    Warehouse — structured, slow

    Lake — schema-on-read

    Lakehouse — hybrid

    Mesh — self-serve product

  21. 21. The development loop only grows

    Brute force belongs in prototypes

    Design makes decisions explicit

    Storage is chosen for the task

    Delivery and infrastructure became code

    Quality and security live inside the loop

    every practice adds a step to the same loop

  22. 22. References

    Architecture, data, DevOps

    Clean Architecture + Microservices

    Domain-Driven Design

    Martin Kleppmann — Designing Data-Intensive Applications

    Accelerate (DORA) + Data Mesh

  23. 23. Thank you!

    polomodov.tech

    All slides and links are in the Telegram channel

    Alexander Polomodov, Technical Director & Fellow, T-Technologies

    @book_cube