AGILE ARCHITECTURE & DEVOPS IN THE CLOUD


The goal, is to deliver high-quality, valuable software in an efficient, fast, and reliable manner. 
In order to achieve these goals, we need continuous feedback, which is essential to making frequent, automated releases to the cloud. The technical quality of a software is fundamentally manifested in the source code. To avoid a steady decrease of technical quality during development it is required to measure it on a regular base (continuously on Dev and at least daily for QA). By doing that it is possible to detect and address undesirable rule violations early in the process. The later rule violations are detected the more difficult and expensive it is to fix them. Continuous Delivery tool-chain, (eg. JIRA, GreenHopper, Bitbucket / Stash, Bamboo, Clover, and Artifactory) span different phases of the development process, with different project roles gaining benefit from this highly integrated toolchain.



The basic paradigm for tackling any large problem is clear---we must “divide and rule.”
Refactoring the code-base into Horizontal Layers and Vertical Slices and Subsystem Modules to tackle “Structural Erosion” or “Accumulation of Structural Debt”. Usually, the “Structural Erosion” begins with minor deviations from the intended design due to changes in requirements, time pressure or just simple negligence. In the early stages of a project, this is not a problem; but during the later stages, the structural debt grows much faster than the code base. As a result of this process, it becomes much harder to apply changes to the system without breaking something. Productivity is decreasing significantly and the cost of change grows continuously up to a point where it becomes unbearable. Exactly how we choose to divide the problem is of overriding importance and requires the definition of a logical architecture for the software system. By grouping the physical level elements like classes, interfaces or packages into higher-level architectural artifacts like layers, subsystems or vertical slices; we can define the the allowed and forbidden dependencies between the architectural artifacts.

Horizontal Physical Layers Decomposition End