I joined Capgemini as a Cloud Solutions Architect and happy to share my profile is on the expert's page of Capgemini Sweden.
Monday, June 14, 2021
Sunday, May 23, 2021
Tips preparing for Professional AWS Solution Architect Exam
I recently cleared my AWS Solutions Architect Professional Exam with a total of 948/1000 and thoroughly enjoyed preparing for the exam. I spent a total of 6 months of preparation. This is in spite of the fact that I got 1000/1000 in the Associate Architect exam last year.
The exam as such is really tough. It not only evaluates one's knowledge and experience on AWS, but one also has to strategize for reading lengthy questions, time each question, and also be prepared to sit continuously for 190 minutes to finish the exam.
Below are some of the learnings and tips that I can share so that one can make good use of and benefit from studying for the exam. Preparation of the exam can be divided into basically 3 phases
Phase 1 Preparation
To start with, the exam requires considerable experience on the platform, I would say at least 2 years of hands-on experience on core AWS services. I would definitely recommend passing the Associate exam as the Professional one is way too tough.
a) Plan for taking a course and stick to the same. Select a course with a good rating on popular training sites like Udemy/Coursera or Udacity. Try out different courses for few days and choose a course where you are comfortable with the language and flow of the course. The basic content of all the highly rated courses is more or less the same. Also, choose a course that has practical samples on the topics that one is not comfortable with or has not worked on.
b) Plan a date and book the exam date. Choose somewhere between 2 to 3 months. AWS allows you to change the date twice for a booked exam.
c) Create a personal AWS account to practice as the exam covers way too many services which one may not have implemented in day-to-day professional work.
d) The exam is not theoretical and requires vast experience in the services. There are several real-world scenarios based questions and there are multiple ways to solve a specific problem. Read through a lot of use cases from different organizations especially the ones from the latest AWS re: Invent.
Phase 2 Preparation
In this phase, get deeper into the course and practice the below points in structuring and helping to know the services better.
a) AWS adds new services very frequently and one has to be well versed with each and every service that is present especially the new ones. AWS updates all the latest services in the below white paper.
AWS overview - https://d1.awsstatic.com/whitepapers/aws-overview.pdf
b) Each of the areas has several services that can perform the same task. Try to analyze which services are the best fit when considering Non-Functional requirements of Cost Optimization, Scalability, Performance, Duration, Automation, Scalability, Availability, Reliability, Security.
a) It is very difficult to master each and every service in depth. So, it is absolutely ok if one knows just the basics of certain services.
b) During this phase ensure you are at ease writing practice tests and are able to attempt 45-50 questions in a single sitting.
c) Your accuracy has improved and so has your reading speed. When attempting questions you are now more confident eliminating the wrong options.
d) By this time you will know that you have the confidence and better hold on the exam. If time is not a barrier, based on your comfort level try to push yourself to prepare and postpone the exam by a week or 2. This will just help you revise multiple times and improve the chances of clearing the exam.
Monday, December 28, 2020
Sunday, November 29, 2020
Extracting running data out of NRC/Nike + (Nike Run Club) using API's
For the past few weeks, I have been struggling to see the running kilometers getting updated in my Nike + App. It could be a bug or a weird feature of the app and since this was kind of a demotivation, I decided to go ahead and create my own dashboard to calculate the results. Also, for some reason, Nike discontinued viewing and editing activities on the web.
Considering I had about 8 years of data and you never know when this kind of apps stop to exist or when they become paid versions. It's always better to persist your data to a known source and if required use it to feed it into any other application. I also went ahead and uploaded my data to UnderArmour's "MapMyFitness" App which has much better open-source documentation.
It turns out that there is a lot of additional information the NRC app captures which are typically not shown on the mobile app. Few of the information include
- Total Steps during the workout including detail split between intervals
- Weather Details during the workout
- Amount of the time the workout was halted for
- Location details including latitude and longitude information that can help you plot your own Map
Coming to the API part, I could not get hold of any official Nike documentation, but came across some older blogs https://gist.github.com/niw/858c1ecaef89858893681e46db63db66 in which they mentioned few API endpoints to fetch the historic activities. I ended up creating a spring-boot version of fetching the activities and storing it in a CSV format in my Google Drive.
The code can be downloaded here -> https://github.com/shailendrabhatt/Nike-run-stats
The code also includes a postman repository which contains a Collection that can also be used to fetch one's activities. Just update the {{access_token}} and run the Get requests.
While the blog that had details of the API was good enough, a few tips that can be helpful
- Fetching the Authorization token can be tricky and it has an expiry time. For that, you will need a https://www.nike.com/se/en/nrc-app account and fetch the authorization token from the XML HTTP request headers for the URL type api.nike.com. There are few requests hitting this URL and the token can be fetched from any of them.
- The API described in the link shows details of after_time, one can also fetch before_time information
/sport/v3/me/activities/after_time/${time}/sport/v3/me/activities/before_time/${time}
- Pagination can be easily achieved using the before_id and after_id. These ids are of different formats ranging from GUIDs to a single-digit number and can be confusing.
Wednesday, November 11, 2020
Thursday, October 1, 2020
Building Composite Architectures
Recently after Gartner in its recent report highlighted “Composite Architecture” or “Composable Architecture” as one of the five emerging trends in modern innovation and technology for the next 10 years. I started coming across this topic in various technical forums.
“Composability” as such is not a new topic, as we have used this frequently in object-oriented programming to achieve Polymorphism. In software architecture terms it is defined as the combination of software systems to produce a new system. In other words, it is directly connected to the goal of agility and reusability and the whole crux of it is to respond to the changing business spectrum.
Domain-Driven Design to build Composable Application
If we take a step back and go back to the way a simple application created using domain-driven design using an onion architecture. The orchestration layer plays a pivotal role in making an application composable by interacting directly with the repository or service layers.
The orchestration layer as such can either be a WebHooks API, a Data importer, API Controller, Messaging service, or a simple REST or SOAP request.
This kind of atomic structure if done properly can result in designing a system that is open to change its external integration seamlessly and also meet the changing business landscape.
Atomic Architecture
If we take the earlier example and apply it in a larger context, the below visualization depicts a circular relationship between different layers in a typical business domain.
Elements of Composable Architecture
The basic building blocks of a composable system is still around the foundation of Containerization, Microservices, Cloud, API’s, headless architecture, etc.
Conclusion
With a Composable mindset, organizations can uplift isolated business operating models and move towards a more practical loosely coupled technology landscape where systems can be plugged in and out flexibly.
This kind of model perfectly fits with organizations adopting agile ways of working or building modern omnichannel integrations with different types of native Cloud-based SaaS platforms.
This model can also be applied to bridge gaps across the entire ecosystem of legacy and modern applications including areas of a unified experience, operations, transformations, infrastructure, external and internal system integrations.
Thursday, July 30, 2020
Friday, June 19, 2020
10 Fundamental Principles one needs to ask before breaking the monolith platform
Below are some of the key principles that need to be evaluated when one starts to break out services from a monolithic platform.
Thursday, June 11, 2020
The myth of Sharing State when breaking large applications
However, legacy applications are seldom portable, and sharing data or state to all intents and purposes is convoluted. Below are some of the typical concerns that need to be evaluated building or maintaining applications with a single state.
Friday, January 10, 2020
Dealing with Concurrency Issues in large applications
Tuesday, December 17, 2019
Product Oriented Development Methodolgy
- Changes in the organization and team structures
- Changes to the ways of working.
- Product Goal
Definition
Sunday, December 15, 2019
Simple way to create automatic alerts for your application using Slack API
Slack has become one of the most widely used channel for communication between teams in many organizations. It has an open source API that can be used to notify alerts and events to different channels and stakeholders.
Below is a simple spring boot application that uses JPA repository to fetch database contents and communicates to Slack via JSlack api
The spring boot application is present in the following path on github.
https://github.com/shailendrabhatt/spring-boot-slack-notification
Saturday, December 7, 2019
Quick 5 Point Website Inspection for Peak Holiday Traffic
1) Examine the Infrastructure Sizing
Calculating the number of Cores?
Calculate the maximum load or throughput of the system?
Calculate the Average response times?
2) Tweak the Enterprise Search Relevancy
Prioritization of Attributes
Monitoring Search Results
Enterprise Search Engines
3) Keep a Close Vigil on the Browser Load times
Evaluate the Caching TTL
Avoid those Content Publishes
Avoid those External Scripts Calls
4) Tune Database Performance
Evaluate the Database Statistics
Optimize Indexes
5) Network Optimization
Thursday, December 5, 2019
How to develop a quick load test for your micro service application
Sunday, November 24, 2019
Changing Organization Perception in a Microsevices journey - Series Part 6
Do spend resources and time on the monolith and its improvement. Seldom, teams just start concentrating on building new-age technology solutions and hardly spend time understanding the legacy system. Without understanding the monolith, it’s hysterical to even attempt breaking it.
Building Microservices by decreasing Entropy and increasing Negentropy - Series Part 5
Always try to target the first step as is to create a macro service until the core services are demarcated. Once the demarcations are clear it is easy to further split into microservices.
Do not add a dependency to the monolithic platform. Ensure that the new services do not call the monolithic application directly and always access it via the anti-corruption layer.
Concluding Thoughts
- If after building services you are in a situation where all developers congregate to fix production issues
- if teams require several developers and take umpteen number of days to fix issues
- If your applications have several hours of downtime
- If your services cannot be tested as a single entity
- If the teams fear to make changes to the code when adding new features
- If you are reverting code and releases instead of failing fast or failing forward
- If you are building services that access the same database
- If the services and functionality is spread across multiple services and teams
- If your applications take multiple teams and several people to deploy changes to production
- If there are too many services depending on each other
- If your teams are still writing and performing manual tests
- If you are building services with hundred of Classes having hundreds of lines of code
- If you have several services that have not been modified for several months
Building Microservices by decreasing Entropy and increasing Negentropy - Series Part 5
Microservice’s journey is all about gradually overhaul, every time you make a change you need to keep the system in a better state or the ...
-
Recently after Gartner in its recent report highlighted “ Composite Architecture ” or “ Composable Architecture ” as one of the five emergin...
-
A distributed application landscape with high cardinality makes it difficult for dedicated operation teams to monitor system behavior via a ...
-
For the past few weeks, I have been struggling to see the running kilometers getting updated in my Nike + App. It could be a bug or a weird...