addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramlinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo

Presentation - Brainstorming your way from a Monolith to a Clean Architecture

  • to
  • IBM Romania

    Bulevardul Vasile Milea 4A,București 061344,România, București (map)

    44.430889 26.052094

  • Sediul IBM Romania, Intrarea B, Etajul 7
  • Presentation - Intermediate - Brainstorming your way from a Monolith to a Clean Architecture

    Speaker: Victor Rentea

    Did you ever wanted to (re)write your enterprise application from scratch? I’m sure you did ! And I’m pretty sure the rewritten codebase would be two times smaller than it is now. But, given the time and budget for a rewrite, what would you do to keep it from becoming “legacy” again in 2 years?


    Ok, Wake Up! Your boss won’t approve a rewrite! But still, what should you aim for with your asiduous refactorings and clean-ups?


    Let me share with you what I believe to be the ideal mindset about an enterprise application: Pragmatic, Clean Evolutionary Architecture.


    Pragmatic = Keep It Short & Simple

    Clean = The Onion Architecture (Dependency Inversion Principle)

    Evolutionary = Continuously redesign

    Architecture = that will ensure Developer Comfort & Safety.

    Tests, tests, tests = Responsible Development


    It’s all basically a summary of the design principles that we distilled over the past 2 years developing 7 enterprise applications for our client (one of the largest of IBM Romania).

    Agenda:

    1) Introduction: KISS, DDD vs Transaction Script

    2) Modeling Data

    The Fit Entity that obeys you

    Value Objects

    Data Transfer Objects that isolate your Entities

    3) Extracting Logic

    Mappers that encapsulate conversion

    Facades that implement logic

    Extracting Domain Services for KISS or DRY

    Logic Extraction Patterns

    4) The Clean Architecture

    Dependency Inversion Principle -- the best of OOP (cf. Uncle Bob)

    Consuming Repositories

    Calling External Services

    5) Testing

    Principles - Design Feedback

    Testability

    A new style of TDD: Extract and Split


    My goal with this talk is basically to open the eyes of enterprise application developers to think critical of the (often) imposed enterprise architecture they follow, and to empower them to think out-of-the-box. Hopefully, they will then be able to tackle unexpected functional complexity with an appropriate minimalistic design that would maintain a low design complexity (=less code =happier developers). It's a story that I've gone through with teams on numerous projects, although I didn't had the chance to talk about it in any public event until now.


    To keep things simple, the discussion will conceptually start from a simplistic one-class system and grow the architecture with additional patterns, justifying at all times the added complexity with fundamental principles of good design + a lot of discussions. Basically, I would love to hear you continuously arguing with me why I’ve added the complexity as I present it to you. This way, adding constructs as we go, we’ll end up very close to the architectures that we actually use today for our apps at my work.


    Even though the talk is more on a conceptual level, you’ll see some code examples that support my decisions.


    Target audience: Enterprise application developers (JavaEE, Spring, even non-Java) with at least 3 years of hands-on backend experience.


    The talk will only address the backend architecture (from the controller to the database).


    References: Clean Code (Robert C. Martin), Rethinking Java EE Patterns (Adam Bien), TDD by example (Kent Beck), Extreme Programming Explained (Kent Beck)



Join or login to comment.

Want to go?

Join and RSVP

141 going

9 spots available

Our Sponsors

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy