Date post: | 12-Jul-2015 |
Category: |
Technology |
Upload: | glitchdata |
View: | 179 times |
Download: | 0 times |
Git ArchitectsGit Architects
© Terence Chia1 September 2010
Presentation: 1hrWorkshop: 1hrRevision: 1.2
Git Architects● System Design ● Team Design● Software Design● Code Organisation● Environment● Infrastructure● Development
Process
● Production Release● Testing● Issue Management● Continuous Integration● Configuration● Backups● Security● Performance
System Design
● Legacy Systems● Modularity / n-tier● New Systems● Integration● Support
Team Design
● Existing Team● Skill Sets● Development Capability● Team Evolution – Hiring / Training● Support
Software Design
● Legacy code● Define Universe● Define Interfaces● Modularity● New Development● Integration● Support
Code Organisation
● Modularity● Maintenance● Define Interfaces● New Development● Integration● Support
Environment
● Development Environment● Resource Schedules● Local / Remote / Team size● Tools● Licenses
Infrastructure
● Servers● Databases● Message Buses● Network Connectivity● Load● Storage● Security / Repository Security● Licenses
Development Processes
● Agile / Waterfall● Code Access Protocols● Testing● Terminology – Beta / Alpha / RC● Issue Tracking / Notifications● Continuous Integration● Release
Git Workflow: Centralised
● Centralised● Simple● Possible Conflict● Doesn't Scale● Overall: Below
Average
A
CentralRepo
BC
D E
Git Workflow: Peer 2 Peer
● N to N Mesh● Self-organising
Teams● Flexible● Possible Conflict● Good for RAD● No Point of Truth● Doesn't Scale● Overall: Bad
A
BC
D E
F
Git Workflow: Hybrid
● Semi-Centralised● Higher
Complexity● Reduced Conflicts● Point of Truth● Scales● Lacks Process● Overall: Average
A
B
D
E F
CentralRepo
SatelliteRepo
SatelliteRepo
C
G
Git Workflow: Integration Mgr● Mid-sized Teams● Self-organising
Teams● Integration
Manager● Point of Truth● Not Scalable● Defined Processes● IM Bottleneck● Overall: Better
APrivate
BlessedRepo
GIntegrationManager
APublic
BPrivate
BPublic
CPrivate
CPublic
Git Workflow: Dictator
● Large Teams● Lieutenant/s (IM)● Large Teams● Overheads● Point of Truth● Scalable● Defined Processes● Overall: Good
APrivate
BlessedRepo
APublic
BPrivate
BPublic
CPrivate
CPublic
FLieutenant
GDictator
ELieutenant
And so on ...
Production Release
● Schedule● Dependencies● Git for Configuration● Passwords● Push / Pull / Manual● Code Integrity
Testing
● Servers● Databases● Message Buses● Network Connectivity● Load● Storage● Security● Licenses
Issue Management
● Jira / Trac / Redmine / more...● Git for Versioning – Branches & Tags● Issue Aging● Burndown / Burnup● Gantt● Resourcing
Continuous Integration
● Realtime / Daily Integration● Git Hooks● Jenkins
Git for Configuration
● Dev / Test / Production Environments● Minor configuration changes● Logging changes● Configuration Security
Git for Backups
● Code Backups● Data Backups● Redundancy / Replication● Automated● Rsync?
Security
● Repository Security ● Codebase Signing● Infrastructure Security
Git Performance
● When is code checked in? ● Code? Data? Media? Configuration?● Binary Files? Or Text?● Repository Size● History● Improving Performance
– git fsck– git gc (packing)
● Case Studies
Thank You
© Terence Chia1 September 2010
● Questions?● Design Exercises.