Git architects

Post on 12-Jul-2015

179 views 0 download

Tags:

transcript

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.