Posts

Showing posts from September, 2019

Technology Goals Setting

Our Code has techical dept? -Low Test coverage -Lack of modularity -Code Complexity -Lack of documentation -Too large code -Over coupling Technology Goal: -Identify technical depth Improve Code Quality: -Code Analysis (Static code analysis, Identify circular dependency, Cyclomatic Complexity, Code Coverage etc.) -Code Profiling -Code Refactoring Tools can be used: -Ndepnds: Static Code Analysis Improve Code Productivity: -Tools: Resharper Practice & adopt cloud native development -Groom team on to understand 12 Factor App Adopt Micro services in components -Perform Domain Driven Design -Implement Microservices following DDD Practice and adopt OpenAPI 3.0 Specification Soft skills Goal: -communication  -Communicate effectively with the team, participate in scrum meetings, design reviews  -Become familiar with current system -collaboration  -Each team member should publish a blog abut their component/modules os SubSyst

Application Real-time performance monitoring Tools:

Image
Kibana Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elasticsearch. Prometheus Prometheus is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true. Graphite Graphite does two things: 1) Store numeric time-series data and 2) Render graphs of this data on demand Splunk Splunk Inc. provides the leading platform for Operational Intelligence. Customers use Splunk to search, monitor, analyze and visualize machine data. NetData Netdata is distributed, real-time, performance and health monitoring for systems and applications. It is a highly optimized monitoring agent you install on all you

Building Evolvable Architecture

Building Evolvable Architecture: Mechanic 1) Identify Dimentions Affected by Evolution 2) Define Fitness Function(s) for Each Dimention 3) Use deployment Pipelines to Automate Fitness Functions Evolvable Arch in Greenfield Projects  Retrofitting Existing Architectures -Identify Appropriate Coupling and Cohesion -Develop Engineering Practices -Identify and design Fitness Functions What is Refactoring Vs Restructuring COST (Commercial off-the-shelf) Implications Migrating Architectures Migrations Steps: - A monolith architecture as the starting point for migration, a "share every thing" architecture. -The service based, "share a little as possible" end result of the migration. -Business functionality groups -Transactiona boundaries -Deployment goals Evolving Module Interactions Module with efferent and afferent coupling --> Modules with a common dependency-->Splitting the shared dependency-->SHaring a dependency via a JAR file --

Evolutionary Data

Evolutionary Data Evolutionary Database Design -Evolving Schemas: Tested, Versioned, Incremental Shared Database Integration -Using database as an integration point -The expand/contract pattern for database refactoring: there are three states of the expand/contract refactoring: Starting State->Expand state->Contract State Inappropriate Data Coupling Two-Phase Commit Transactions

Architecture Styles

Architectural Styles: 1) Big Ball of Mud 2) Monolyth Architecture 3) Layered Architecure 4) Modulare Architecture 5) Micro Kernal Archtecture 6) Event-Driven Architectures 7) Mediators Architecure 7) Service Oriented Architecure (SOA)      a) ESB-driven SOA          8)  Microserves      -The domain dimension is embedded within technical architecture.    - Micro-services architectures partition across domain lines, embedding the technical architecture. Microservices 7 Principles:  a) Modeled around the business domain  b) Hide implementation details  c) Culture of automation  d) Highly decentralized  e) Deployed Independently  f) Isolate failure  g) Highly observable It well followed the evolutionary architecture characteristics:  -Incremental change  - Gided change with fitness functions  - Appropriate coupling "Shared Nothing" and Appropriate Coupling: Commonly used architecture for migration is "Service-base

Thoughtworks 2019

Image