Slide 1

Slide 1 text

Architectural practices for greater scalability and innovation Otávio Santana Software Engineer & Architect and Open Source Committer [email protected] @otaviojava

Slide 2

Slide 2 text

Who am I? Software Engineer & Architect @otaviojava Otavio Santana ● Java Champion, Oracle ACE ● JCP-EC-EG-EGL ● Apache and Eclipse Committer ● Jakarta EE and MicroProfile ● Duke Choice Award ● JCP Award ● Book and blog writer @otaviojava

Slide 3

Slide 3 text

What is Architecture?

Slide 4

Slide 4 text

What is Architecture? Several approaches @otaviojava osarchitech.com

Slide 5

Slide 5 text

What is Architecture? Organization view and structure of software Conway's law The two-pizza rule Integration Context @otaviojava osarchitech.com

Slide 6

Slide 6 text

What is Architecture? Everything is around software! “Every Company is a Data Company” CIO Network “Every Company is a Software Company” Forbes “Every business is a software business” CMMI @otaviojava osarchitech.com

Slide 7

Slide 7 text

Complexity Achieving Simplicity Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system. @otaviojava osarchitech.com

Slide 8

Slide 8 text

Complexity How to measure? Change amplification Cognitive load Unknown unknowns @otaviojava osarchitech.com

Slide 9

Slide 9 text

Why do we need architecture? Ref: https://www.csoonline.com/article/2130877/the-biggest-data-breaches-of-the-21st-century.html Less Damage Unite Team Fault Tolerance Incremental Delivery Avoid Complexity Scalability @otaviojava osarchitech.com

Slide 10

Slide 10 text

Scalability Handle a growing amount Technology Culture Methodology A single point of failure @otaviojava osarchitech.com

Slide 11

Slide 11 text

Who is an architect? Etymology Arkhi -Greek Chief Tekton Greek Builder Arkhitekton Greek Master builder @otaviojava osarchitech.com

Slide 12

Slide 12 text

Who is an architect? Duties Trade-offs Changes Fault tolerances @otaviojava osarchitech.com

Slide 13

Slide 13 text

Who is an architect? Stereotypes @otaviojava osarchitech.com

Slide 14

Slide 14 text

Who is an architect? Single point of failure Bus factor Management 3.0 View @otaviojava osarchitech.com

Slide 15

Slide 15 text

Who is the architect? Steward A person responsible for overseeing and protecting something considered worth caring for and preserving. Mark Reinhold Chief Architect, Java Platform Group, Oracle The Future of the Java Platform and the JDK: Who is in Charge? https://www.youtube.com/watch?v=HpbchS5kmio @otaviojava osarchitech.com

Slide 16

Slide 16 text

Who is an architect? The whole team Architecture without Architects Erik Dörnenburg The Myth of the Genius Programmer Software engineer at Google @otaviojava osarchitech.com

Slide 17

Slide 17 text

Architects assemble The whole team Design Architecture Documentation Communication @otaviojava osarchitech.com

Slide 18

Slide 18 text

Documentation None A self comment is a utopia The same mistake twice A huge effort instead of assembling Thousand of meetings People’s mind @otaviojava osarchitech.com

Slide 19

Slide 19 text

Documentation Over More enemy than an ally Easy to depreciate Hard to write More work to code Hard to maintain @otaviojava osarchitech.com

Slide 20

Slide 20 text

Documentation Trade-off PPT does not compile Over Documentation Blind code is Go horse None Documentation Document what makes sense Fair Documentation @otaviojava osarchitech.com

Slide 21

Slide 21 text

Documentation First steps C4-model Architecture’s map Tech-radar Technologies's view ADR Don’t repeat the error Communication A clear direction @otaviojava osarchitech.com

Slide 22

Slide 22 text

C4-model Architecture’s map C1 = Context C2 = Containers C3 = Components C4 = Code @otaviojava osarchitech.com

Slide 23

Slide 23 text

C1 Context Business Perspective Starting point Everyone understand Systems @otaviojava osarchitech.com

Slide 24

Slide 24 text

C2 Containers It is not a docker! Architecture Container = App, DB Integration @otaviojava osarchitech.com

Slide 25

Slide 25 text

C3 Components More details Multiples Components Technologies Details (Design Docs) @otaviojava osarchitech.com

Slide 26

Slide 26 text

C4 Code Avoid it! Exception Deep Detail UML @otaviojava osarchitech.com

Slide 27

Slide 27 text

Tech-radar Technologies's view Avoid a mix of technologies Breaking down the silos Duplicate efforts New researches @otaviojava osarchitech.com

Slide 28

Slide 28 text

Tech-radar Rings Languages and Frameworks Platforms Techniques Tools There is no standard Context matters @otaviojava osarchitech.com

Slide 29

Slide 29 text

Tech-radar Quadrant Strategic Essencial Potencial Deprecated @otaviojava osarchitech.com

Slide 30

Slide 30 text

Tech-radar Quadrant Strategic Essencial Potencial Deprecated The most important The team is more confident Several success cases @otaviojava osarchitech.com

Slide 31

Slide 31 text

Tech-radar Quadrant Strategic Essencial Potencial Deprecated There is an experience in using it Not fully mature There is training @otaviojava osarchitech.com

Slide 32

Slide 32 text

Tech-radar Quadrant Strategic Essencial Potencial Deprecated Research it at least a team It has a chance for more adoption Carry out studies and tests @otaviojava osarchitech.com

Slide 33

Slide 33 text

Tech-radar A clear direction Strategic Essencial Potencial Deprecated Unsafe Avoid it Out fashion @otaviojava osarchitech.com

Slide 34

Slide 34 text

ADR Record all the strategic decision Make sure about the trade-off The mistake is one learning path @otaviojava osarchitech.com

Slide 35

Slide 35 text

Communication Clear Async has a higher priority Meeting notes Write/Read deal @otaviojava osarchitech.com

Slide 36

Slide 36 text

Breaking down the silos Avoid delay Integration Prevent Avoid delay Integration Prevent @otaviojava osarchitech.com

Slide 37

Slide 37 text

Show me the case @otaviojava osarchitech.com

Slide 38

Slide 38 text

Previous scenario What is open source? Who cares about architecture? We need to believe! @otaviojava osarchitech.com

Slide 39

Slide 39 text

The decisions, why? ● No decision description ● No trade-off @otaviojava osarchitech.com

Slide 40

Slide 40 text

The user is the enemy No communication process No synchronization with DevRel @otaviojava osarchitech.com

Slide 41

Slide 41 text

The scalability that doesn't scale Why do we use microservices? To scale. Do we scale? No @otaviojava osarchitech.com

Slide 42

Slide 42 text

The premisses ● Everything as code (Architecture and decision) ● Synchronization with the clients ● Decision by trade-off ● Data-centric area @otaviojava osarchitech.com

Slide 43

Slide 43 text

C4-model C4-Builder https://docs.horusec.io/c4model/en#/ https://docs.usebeagle.io/c4model/en/#/ https://docs.charlescd.io/c4model/en/#/ @otaviojava osarchitech.com

Slide 44

Slide 44 text

C4-model C4-Builder @startuml c1 LAYOUT_WITH_LEGEND() LAYOUT_LEFT_RIGHT() Person(user, "Developer", "") System(charlescd_system, "CharlesCD System", "") System_Ext(kubernetes, "Kubernetes") Rel(user, charlescd_system, "Manages your deployments") Rel(charlescd_system, kubernetes, "Deploys...") Rel(charlescd_system, user, "Sends...") @enduml @otaviojava osarchitech.com

Slide 45

Slide 45 text

Tech-radar One to the whole area/company https://opensource.zup.com.br/radar @otaviojava osarchitech.com

Slide 46

Slide 46 text

ADR Log4brains Markdown Flow @otaviojava osarchitech.com

Slide 47

Slide 47 text

Data-centric Area ● Every decision data based ● Dashboards ● Learn from the past @otaviojava osarchitech.com

Slide 48

Slide 48 text

The results Brasil: 80,6% EUA: 7,4% Índia: 2,7% China: 2% Rússia: 1,5% Alemanha: 1,3% Japão: 1% Indonésia: 0,7% Argentina 0,4% @otaviojava osarchitech.com

Slide 49

Slide 49 text

Thank you Barbara Rossalli Lucius Curado Wilian Gabriel da Silva Mari Moreira Carol Vilas Boas Jomar Silva @otaviojava osarchitech.com

Slide 50

Slide 50 text

Thank you! Otávio Santana Software Engineer & Architect [email protected] @otaviojava @otaviojava osarchitech.com