Pros
|
Cons
|
|
ELK
|
Good for
non cloud apps. AWS and GCP has their own log monitoring system.
Comes
with complete search engine called Elasticsearch
Near
real time processing
Complete
dashboards
|
Not good for cloud native apps ( Apps in AWS , GCP ) Required configuration of 3 components. ( Elasticsearch, Logstash, Kibana dashboard ) Elasticseach required heavy memory |
AWS
CloudWatch
|
Can monitor
infrastructure Supports alerting Supports Dashboards CloudWatch Supports many matrices Can monitor resource utilization Flirtations works very fast
Near
real time processing
Can
export data to S3 buckets
|
Dashboard configuration
takes time across
multiple filtration Not supports app level debugging as of 2020 |
Google
Stackdriver
|
Support app level
debugging without changing the app or adding new log lines Can monitor infrastructure Support wide range of matrices Easy configurations Easy dashboards Supports AWS VMs |
Better than ELK and same as AWS CloudWatch. Excludes app level dubbing feature which is not available in AWS as of 2020 |
Saturday, February 22, 2020
Containerizing your apps 3 - ELK vs Amazon Cloudwatch vs Google Stackdriver
Tuesday, February 11, 2020
Agile software development and Microservices model to overcome Agile pitfalls
It is an engineering discipline and practice based on values and principles of agile manifesto. This promotes self-organizing cross-functional team to deliver working product. This promotes adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.
There are common incidences that makes agile smell.
1. Lack of expertise knowledge
2. Lack of training
3. Adding stories to current sprint
4. Problem solving in daily stand-ups
5. Lack of test automation and developer unit testing
6. Time-boxed deliveries reduce overall quality
How microservices overcome Agile pitfalls
1. Developers can focus on specific functionalities as they deploy separately.
2. Reduce high code coupling and easy for developer unit testing
3. Independent deployment to each module welcome quick changes and deployments
4. Availability of well tested microservice frameworks,cloud environments makes easy project setups and deployments
5. Easy to manage version control and minimum code conflicts due to independent modules
6. Easy to adopt CICD , support devops for maintenance including high scalabilities and availability
Monday, February 10, 2020
12 principles of Agile Manifesto
1. Customer satisfaction
2. Welcome changes at any time
3. Frequent deliveries of working software
4. Developers and business people work together
5. Involve motivated individuals, trust them with proper working environment.
6. Face-to-face discussion with-in development team
7. Working software is primary measure of progress
8. Sustainable development with minimizing bugs, reusable components, high quality codes to make evolvable software, low maintenance cost
9. Continuous attention on technical excellency and good designs
10. Simplicity to reduce amount of effort
11. Self organized team
12. Regular intervals to become more effective and adoption for better software
Based on https://agilemanifesto.org/principles.html
2. Welcome changes at any time
3. Frequent deliveries of working software
4. Developers and business people work together
5. Involve motivated individuals, trust them with proper working environment.
6. Face-to-face discussion with-in development team
7. Working software is primary measure of progress
8. Sustainable development with minimizing bugs, reusable components, high quality codes to make evolvable software, low maintenance cost
9. Continuous attention on technical excellency and good designs
10. Simplicity to reduce amount of effort
11. Self organized team
12. Regular intervals to become more effective and adoption for better software
Based on https://agilemanifesto.org/principles.html
Branch merge and re-integration cycles
Bellow steps explains how to deal with same source by two team without having any source code conflicts.
Assume 2 teams are working on same source code.
Team B create branch from Trunc ( Master branch )
Team C create branch from Trunc ( Master branch )
Day 1 : Changes to branch B by team B
Day 1 : Changes to branch C by team C
Day 2 : Team B merge branch B from trunc for any changes
Day 2 : Team C merge branch C from trunc for any changes
Day 2 : Changes to branch C by team C
Day 2 : Team C merge branch C from trunc for any changes
Day 2 : Team C release branch C for testing
Day 2 : Team B merge branch B from trunc for any changes
Day 2 : Testing team test the branch C and do the production deployment
Day 3 : Testing team observation on any production issues
Day 3 : If no issues observed , team C re-integrate branch C to trunc
If there are issues observed in recent release, then team C merge branch C for any changes and release fixes for issues observed.
Testing team test the branch C and do the production deployment
Day 4 : Team B merge branch B from trunc for any changes
Day 5 : Team C merge branch C from trunc for any changes
Day 5 : Team C re-integrate branch C to trunc
Day 6 : Testing team test trunc for recent changes and smoke test on overall functionalities
Day 7 : Team B merge branch B from trunc for any changes
Day 7 : Team B release branch B for testing
Day 7 : Testing team test the branch B and do the production deployment
Day 7 : Testing team observation on any production issues
Day 8 : If no issues observed , team B re-integrate branch B to trunc
If there are issues observed in recent release, then team B merge branch B for any changes and release fixes for issues observed.
Testing team test the branch B and do the production deployment
Assume 2 teams are working on same source code.
Team B create branch from Trunc ( Master branch )
Team C create branch from Trunc ( Master branch )
Day 1 : Changes to branch B by team B
Day 1 : Changes to branch C by team C
Day 2 : Team B merge branch B from trunc for any changes
Day 2 : Team C merge branch C from trunc for any changes
Day 2 : Changes to branch C by team C
Day 2 : Team C merge branch C from trunc for any changes
Day 2 : Team C release branch C for testing
Day 2 : Team B merge branch B from trunc for any changes
Day 2 : Testing team test the branch C and do the production deployment
Day 3 : Testing team observation on any production issues
Day 3 : If no issues observed , team C re-integrate branch C to trunc
If there are issues observed in recent release, then team C merge branch C for any changes and release fixes for issues observed.
Testing team test the branch C and do the production deployment
Day 4 : Team B merge branch B from trunc for any changes
Day 5 : Team C merge branch C from trunc for any changes
Day 5 : Team C re-integrate branch C to trunc
Day 6 : Testing team test trunc for recent changes and smoke test on overall functionalities
Day 7 : Team B merge branch B from trunc for any changes
Day 7 : Team B release branch B for testing
Day 7 : Testing team test the branch B and do the production deployment
Day 7 : Testing team observation on any production issues
Day 8 : If no issues observed , team B re-integrate branch B to trunc
If there are issues observed in recent release, then team B merge branch B for any changes and release fixes for issues observed.
Testing team test the branch B and do the production deployment
Subscribe to:
Posts (Atom)