19 February, 2021

One new learning / day - however small it is

  • Read a blog / or article
  • Watch TED talk 
  • Read a small self-help book (many free eBooks available with less than 100 pages/can be completed in 1-2 days)
  • Explore on how things works - on variety of domains
  • Watch documentary on your favorite subjects
  • Get to know new healthier life style habits
  • Find a ways for digital detox
  • Look at the ways to improve your existing good life style habits
  • Relook and try to practice your childhood passion that you left long back due to your professional commitments / busy life 
  • Subscribe to good YouTube channel
  • Watch webinars
  • Attend online free courses
  • Watch TV on new travel destinations
  • Understand/Read new culture around the world
  • Learn ancient wisdom



30 March, 2020

Why Tech Upgrades?


Context

As technology plays key role in enabling core business objectives, it does make sense to review the technology portfolio periodically for possible enhancements. This will bring in better ROI in-terms on lower running costs, increased productivity and better customer service or scale to achieve ever-demanding business requirements.
There are many reasons why one need to continue investing in technology – and consider regular upgrades and make this as essential part of strategic decision. Following are few focus area one should consider while upgrading the enterprise wide applications.

Reduced productivity

In many enterprises, most of the application, built decade ago, lacks support of development platform, and associated best practices. These applications not updated with latest platform specific security patches, enhanced language/framework capabilities for robustness and reliability. This is leading to breakdown of the applications frequently. Hence, overall team productivity is reduced and causing challenges around customer service.

Lack of developer community support

As technology is ever evolving and most of the developers would prefer to work on latest breed of technology stacks. The legacy stacks will always pose challenges to find right talents to support such applications. It is important that, key applications would go periodic technology upgrades to harness power of latest platform capabilities along with good community support and availability of talents to support such application portfolio. It will lead to boost the morale of the staff with latest periodic technology trainings. Otherwise, many frustrated individuals (specifically millennials) would leave the job.

Better User Experience

Most of the time legacy applications missing good user experience. It is very important to engage the application users with better user experience. Most of the applications lacks responsive design with multi-channel support – like mobile devices. The strategic decisions shall be applied to overhaul the UI layer of the key applications with organization specific UI ergonomics / guidelines.

Unified Hosting & Release Model

Enterprise applications deployed in heterogeneous environments. It is very important to bring all application deployment to uniform platform – such as Azure PaaS. Also, leverage modern application deployment architecture using frameworks such as Docker and Kubernetes for standardized release trains. This would help release application fixes / features in more reliable manner.

Remove On-premises Mainframe dependencies

In order to overcome the latency issues, it is important that, tee intermediate Azure SQL / Cosmos DB shall be designed to make periodic updates from on-premises legacy databases to Azure environment. This will enable applications to make call natively in Azure environment. In addition, SOAP Webservices to be remediated to REST API. Moving towards REST based API eco system would help to modernize the service layer with latest architectural patterns leading to better service.



Leverage modern architecture style

Most of the applications follow old monolithic style and lacks good design specifically around long processing jobs leading to sub optimal performance. However, apps moved to cloud but underlying technical debts remain same. It is very important that we refactor applications to be cloud native by taking scale and performance of azure services to have better performing apps.

Better Maintenance

With good code refactoring of key modules and providing comprehensive unit test suites would lead to better diagnosis of production issues. This will increase the quick turnaround time of production tickets, as replay of unit test suites would identify application abnormal conditions quickly.

Streamline of knowledge

The uniform technology stacks and deployment/release environment would help to streamline the knowledge on applications. In addition, this would help better organize the trainings for new joiners.

Who is real stakeholders for Enterprise architecture?


OUT SIDE IN – in the following order



  1. Layer – End customers of your enterprise services
  2. Layer – Your enterprise executive team / sponsors
  3. Layer – Project and program teams in your company
  4. Layer – Finally your own EA team members




13 March, 2020

Azure Security

Azure VMs (IaaS) security steps –
  1. Applying NSGs (Network Security Group) on Subnet or at VM level to control Inbound and Outbound traffic by providing IP range and rules
  2. Blocking Ports that can be a threat and not needed to expose to other Azure Services or public traffic. RDP can be blocked and if someone still needs to do RDP on VM for any administrative work, then make use of Jump Server
  3. Use of appropriate DMZ and making use of 3rd party firewalls like Barracuda
  4. Azure RBAC and Policies in place for better control and governance
Azure PaaS (App Service) security steps –
  1. Applying WAF (Web Application Firewall) to protect your applications
  2. Enable Threat Protection for Azure SQL DBs
  3. Manage SAS Tokens and Keys effectively for Azure Storage and keys of other APIs
  4. Implement Multi-Factor Authentication for applications
  5. Implement AD Authentication to enforce policies
  6. Use Azure Key Vault to store secret keys (including passwords of Azure VMs)
  7. Ensure to run OWASP Top 10 testing for your application and align as per OWASP Top 10 policies
  8. Restrict IP address by adding your resources to Virtual Network
  9. User Azure DDoS protection and Azure Pen Test to ensure highest level of security for your applicatio

Life Cycle of Agile Architecture


Any process that is designed to be “agile” in nature will have longer sustenance.
Overview:
If software architecture is a key business asset for an organization, then architectural review/analysis must also be a key practice for that organization. Why? Because architectures are complex and involve many design tradeoffs. Without undertaking a formal review /analysis process, the organization cannot ensure that the architectural decisions made are sufficient and don’t pose any significant challenges to quality attributes associated with the project.
Why do we need?
As the saying goes in the medical field, “The prevention is better than cure”. In similar lines, the modern enterprise applications are very complex in nature and require reviews of the software architecture blueprint on a periodic basis. The architecture review helps the project teams to align architecture vision throughout the development cycle. Otherwise, the mistakes around architecture would become very costly and can lead to catastrophic failures during application maintenance / or its life cycle. In addition, review during inception phase would help to establish the early feedback loop to respective stakeholders before engaging in development with a full-fledged team.
How can it be performed?
Any process that is designed to be “agile” in nature will have longer sustenance. Any rigid/formal ceremonies will have less buy-in from teams. So keeping this in mind, the architecture artifacts that are developed and analyzed in the form of sketches, decision trees, technical spike resolutions etc…would become primary communication channels for the review. The simple iterative workshops containing high-level steps as outlined below would be sufficient to complete the exercise.
Step-1: Project Manager / Scrum Master invites external architect [Outside person] for the review
Step-2: Product owner the / Project Manager / Scrum Master / BA would provide high-level business context/business drivers associated with the project
Step-3: Architect would present the artifacts that solve business drivers
Step-4: External architect would engage in discussion with team – primarily with the product owner and project architect.
Step-5: Workshop will be completed with recommendations and suggestions / risk mitigations to improvise the architecture blueprint [If any] with notable rational behind such amendments.
This cycle would last in a single day with multiple workshops. Can be scheduled typically every 3-4 sprints once, to re-look at original decisions and identify any gaps in the implementation for better alignment. This kind of exercise is better suited for complex application architectures that would require at least 10+ sprints for realization.
Challenges:
The architecture review is not an easy job, as it requires a lot of maturity among the people involved in this process. There are many challenges organization might face when trying to implement this practice. Among them are some key considerations one must be aware mentioned below-
1. The organization's architecture practice is very novice; leading to little or no information found on architecture decisions on the application that is under review. This makes an extremely complex endeavour for external experts to review the architecture, as there is no contextual information available.
2. Lack of architecture experts to understand the business/technical complexity and provide meaningful feedback that brings value-add to project stakeholders
3. Open-mindedness of project teams to receive, acknowledge and implement the feedback in right spirit
Conclusion:
As companies embark on high stakes of enterprise applications and integration initiatives, often the results will be in question. Appropriate investments in the form of periodic architecture reviews would result in a better risk mitigation safety net and prevent costly mistakes post project realization. Thus, periodic architecture analysis/review would help project teams to receive honest feedback on the current state of the project and helps to develop a roadmap to actionable items, for future iterations for better alignment on stated quality attributes and initial architecture vision.


One new learning / day - however small it is

Read a blog / or article Watch TED talk  Read a small self-help book (many free eBooks available with less than 100 pages/can be completed i...