managing modular software
play

Managing Modular Software for your NuGet, C++ and Java Development - PowerPoint PPT Presentation

Managing Modular Software for your NuGet, C++ and Java Development Agenda Modular software why? Building modular software in Java in C++ in .NET Whos talking? @jbaruch 3 WTF IS MODULE? Module Modular


  1. Managing Modular Software for your NuGet, C++ and Java Development

  2. Agenda • Modular software – why? • Building modular software … • … in Java • … in C++ • … in .NET

  3. Who’s talking? @jbaruch 3

  4. WTF IS MODULE?

  5. Module Modular programming (also called "top- down design" and "stepwise refinement") is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

  6. TL;DR

  7. Module

  8. Module Formula Data + Metadata = Module

  9. Unit of code

  10. Encapsulated

  11. Encapsulated

  12. Discrete

  13. Discrete

  14. Discrete

  15. Reusable

  16. Exposed via APIs

  17. Packages

  18. Modules or Packages? Technology ¡ Package ¡ Module ¡

  19. Modules or Packages? Technology ¡ Package ¡ Module ¡ Java ¡ package ¡keyword ¡seman2cs ¡ *.jar ¡files, ¡OSGi ¡bundles ¡

  20. Modules or Packages? Technology ¡ Package ¡ Module ¡ Java ¡ package ¡keyword ¡seman2cs ¡ *.jar ¡files, ¡OSGi ¡bundles ¡ C++ ¡ namespace ¡keyword ¡seman2cs ¡ *.dll ¡files, ¡*.so ¡files ¡

  21. Modules or Packages? Technology ¡ Package ¡ Module ¡ Java ¡ package ¡keyword ¡seman2cs ¡ *.jar ¡files, ¡OSGi ¡bundles ¡ C++ ¡ namespace ¡keyword ¡seman2cs ¡ *.dll ¡files, ¡*.so ¡files ¡ C# ¡ namespace ¡keyword ¡seman2cs ¡ *.dll ¡files, ¡NuGet ¡packages ¡

  22. Modular Software – why?

  23. Discrete Units Are Smaller

  24. Modular Security Control

  25. Multi-Team Agility

  26. Code Sharing

  27. Forcing API

  28. Module ð Dependency

  29. HOW STUFF PLAYS WITH MODULES

  30. Build Tools and Dependencies

  31. Recipe 1. Take sources

  32. Recipe 1. Take sources – OK

  33. Recipe 1. Take sources – OK 2. Bring dependencies

  34. Recipe 1. Take sources – OK 2. Bring dependencies – where from?

  35. Recipe 1. Take sources – OK 2. Bring dependencies – where from? 3. Build binaries

  36. Recipe 1. Take sources – OK 2. Bring dependencies – where from? 3. Build binaries – OK

  37. Recipe 1. Take sources – OK 2. Bring dependencies – where from? 3. Build binaries – OK 4. …

  38. Recipe 1. Take sources – OK 2. Bring dependencies – where from? 3. Build binaries – OK 4. … - now what?

  39. CI Servers and Modules

  40. CI servers run build tools.

  41. CI servers run build tools.

  42. We can do better!

  43. Cascading Builds

  44. Per module results

  45. Wait, while on the CI Servers …

  46. BINARY REPOSITORY AND …

  47. What is Binary Repository

  48. Said who?

  49. Binary Repository Experts

  50. Binary Repository as Modules Source

  51. Binary Repository as Modules Source

  52. Binary Repository as Modules Source

  53. Binary Repository as Deployment Target

  54. Binary Repository as Deployment Target

  55. Wait a Minute, What’s Wrong With My Source Control System?!

  56. Sources vs. Binaries Sources ¡ Binaries ¡

  57. Sources vs. Binaries Sources ¡ Binaries ¡ Text ¡ Blob ¡

  58. Sources vs. Binaries Sources ¡ Binaries ¡ Text ¡ Blob ¡ Diffable ¡ Not ¡diffable ¡

  59. Sources vs. Binaries Sources ¡ Binaries ¡ Text ¡ Blob ¡ Diffable ¡ Not ¡diffable ¡ Versioned ¡by ¡ Versioned ¡by ¡ content ¡ name ¡

  60. Sources vs. Binaries Sources ¡ Binaries ¡ Text ¡ Blob ¡ Diffable ¡ Not ¡diffable ¡ Versioned ¡by ¡ Versioned ¡by ¡ content ¡ name ¡ Stored ¡by ¡ Should ¡never ¡ override ¡ override ¡

  61. Versioning By Content ¡ Text ¡ MyPoem.txt ¡ (rev. ¡01) ¡

  62. Versioning By Content More ¡ Text ¡ Text ¡ MyPoem.txt ¡ (rev. ¡02) ¡

  63. Versioning By Content More ¡ More ¡ Text ¡ Text ¡ Text ¡ MyPoem.txt ¡ (rev. ¡03) ¡

  64. Versioning By Content More ¡ More ¡ Text ¡ Text ¡ MyPoem.txt ¡ (HEAD) ¡

  65. Mismatch 0100110 0100110 Text ¡ 1010011 1010011 1001101 1010011 More ¡ 0110101 ¡ 1011010 ¡ 0110101 ¡ Text ¡ More ¡ Text ¡ MyBook-­‑1.0.zip ¡ MyBook-­‑1.1.zip ¡ MyBook-­‑2.0.zip ¡ MyPoem.txt ¡

  66. Git is a Distributed System

  67. R U SURE U WANT 2 CLONE IT ALL?

  68. OK Then, But What’s Wrong With My File Server?!

  69. It’s Fine if it knows how to:

  70. It’s Fine if it knows how to: Optimize storage size

  71. It’s Fine if it knows how to: Optimize storage size

  72. It’s Fine if it knows how to: Expose REST API Optimize storage size

  73. It’s Fine if it knows how to: Expose REST API Optimize storage size Enforce Module Security

  74. It’s Fine if it knows how to: Expose REST API e l c y c e f i l t c a f i t r a e g a n a M Optimize storage size Enforce Module Security

  75. It’s Fine if it knows how to: Expose REST API e l c y c e f i l t c a f i t r a e g a n a M Optimize storage size Enforce Module Security

  76. It’s Fine if it knows how to: Expose REST API e l c y c e f i l t c a f i t r a e g a n a M Optimize storage size Enforce Module Security Search by name, context and content

  77. BTW, How Many Years It Took?

  78. Binary Repository and CI/CD

  79. CI Server is the Single Source of Truth

  80. Binary Repository is The Single Target of Truth

  81. Save the Truth!

  82. Make Strange Binary Love

  83. Standard of Truth

  84. How Everything Fits Together

  85. How Everything Fits Together

  86. How Everything Fits Together

  87. How Everything Fits Together

  88. How Everything Fits Together

  89. How Everything Fits Together

  90. How Everything Fits Together

  91. Perfect …

  92. You Liked it, didn’t you?

  93. Things to Consider

  94. Lock-in?

Recommend


More recommend