Archive for month

August, 2021

5 Best Practices to Drive Seamless Cloud Migration

Alex Thompson Data and AI August 26, 2021

With most organizations unexpectedly thrust into the remote work scene all of a sudden, the popularity of cloud environments has been at an all-time high. While cloud enables an anywhere and anytime kind of access, allowing businesses to function efficiently even in the post-pandemic era, it has also helped businesses see other upsides to it: cost and process streamlining to name a few.

Migrating an entire organization’s data to the cloud is not an easy task. Despite careful considerations and strategic planning initiatives, leaders often are blindsided by unexpected pitfalls that affect their overall business.

Here are 5 best practices to ensure your cloud migration happens without any unforeseen complications.

Plan, plan and plan some more

Of course, no organization would embark on a cloud migration journey without planning its budget. But what companies often fail to account for is their future needs, the maintenance costs for the infrastructure, application modernization requirements, and the price variations between different cloud environments. When they’re hit with sudden costs that they previously thought didn’t exist, organizations hit a roadblock.

It is therefore very important to figure out which cloud solution—public, private, hybrid and multi-cloud—suits your organizational needs and meets your budget.

The road not taken might be your right approach

Your organization is unique and therefore your migration strategy must also be unique. Simply “lifting and shifting” data is not what cloud migration is about. Many on-premise applications might not function efficiently after rehosting. This might become a huge bottleneck, especially when major departments are dependent on malfunctioning applications. No organization wants to deal with IT downtimes, especially after they’ve migrated to the cloud. This will also strain the budget when application modernization requirements arise.

Run a discovery and assessment of all the applications and plan your cloud migration approach: rehosting, re-platforming, refactoring or a mix of all these.

Teamwork makes the dreamwork

It’s common for even the technology workforce to experience digital disdain. Involve your workforce, listen to their apprehensions, provide thorough training and give them enough time to get acquainted with the new system. Involving them after the migration is entirely complete could become a very costly mistake.

This also applies if you choose to seek help from an external team for the migration. Form a team with members from both the migration partner and your workforce. Create a checklist, assign ownerships and streamline the process. Choose the right partner with proven experience in migrating for a company of your scale.

Take one safe step at a time

Another big mistake organizations tend to make is not taking it slow. Create a checklist to not miss anything and follow it strictly. Set goalsprepare for worst-case scenariosbreak the process down into stages, and start with smaller departments such as HR or marketing that have the least business impact. This will help you identify potential issues that could occur later when the important datasets are migrated.

Measure your success

Ideally, measuring your success should be your first and your last step in your migration journey. In the first step, you will create a vision of how this migration will positively impact your business and outline your expectations. Once the migration is complete, measure the performance of your applications and business units and see where you stand.

 On a side note, documenting this success could also come in handy when you have to convince your stakeholders when you embark on more technology adoption projects.

Cloud is here, and it is here to stay

And that’s a good thing because it helps organizations of all sizes to leverage the best of technologies and make their business thrive better. Now it’s up to us to take the big step.

DevOps: An Architect’s Career Dream

Alex Thompson Culture August 25, 2021

I started my tech career like most others with an engineering background. It was in early 2018 when cloud was not all that prevalent and MS Azure was still new, that I started working on cloud. It was an infrastructure development project where we completely migrated an on-premise system into the cloud. I knew then that this would be the direction my career is headed in – with DevOps.

 

An Introduction to DevOps

DevOps as the name suggests is a combination of development and operations. For me, the beauty of DevOps lies in the fact that you get to see the entire SDLC in action. Once a developer checks in his code into a DevOps program, be it Jenkins or Azure, it is the DevOps architect who decides what different tasks to put into the program that correspond to the technology or version of the code checked in. You’re basically facilitating the developers’ needs — whether it is creating multiple environments, evaluating opportunities to enhance how a developer creates code, identifying alternatives to a developer’s idea, logic or look at scope of automation.

As you can see, the scope of DevOps is vast. With a simple automation you can save hours of manual work. All it needs is a thorough understanding of the backend. There’s a whole lot of research involved, getting to know your way around the system, and then figuring out what parts of it can and should be automated, and which kind of automation delivers the most impact for the client. This curiosity about the solutioning of automations got me to the architecture side of DevOps.

 

Scope of DevOps within a project context 

Any DevOps setup is intended to do 3 main things.

  1. It protects the environment with application security solutions.
  2. It enables developers to maintain their source code and its versioning.
  3. It ensures that the hosting is done right for the client environment irrespective of the various programs running on a developer’s backend system.

While setting up the CI/CD pipeline, hosting environment accounts for 60% of a DevOps’ time, the remaining 40% that involves taking care of the environment — creating security solutions, providing enhancement ideas, identifying scope for automation and research on latest cloud offerings. This is also how you can differentiate yourself as an architect.

 

Rewards and Challenges of being a DevOps Architect 

My favourite part of DevOps is the challenge of researching the right piece of code to automate, that also gives the maximum optimization. And of course, I feel good saving all the manual effort and time for my development team and my clients.

The toughest part of it all is in convincing yourself and others that it can be done. For instance, when you’re looking at the setup of a huge system, there are always various solutions floating around, including your own. At the end of the day, the scientific process through which you explain your automation choices and technology decisions that benefits everyone is critical. And therein lies the core value of a DevOps architect.

 

DevOps Teams at TVS Next 

As a DevOps Architect, I can talk to the client directly — no restrictions. This client-facing role is something that I’ve learnt to handle here at TVS Next.

What I love most about my team here is how everyone feels ownership. It’s like the kind of exceptional teamwork you see on the USS Enterprise. If you’ve watched Star Trek, you’d know how the crew steps in to manage the ship whenever Captain Kirk is needed elsewhere. That’s how my team at TVS Next operates, seamlessly, even when we’ve all been working remotely.

 

Interesting future ahead 

I’d say DevOps is still pretty nascent. There’s a lot of scope, so much more to explore.

I recently got this idea to develop a new cloud service after getting to know about Disaster Recovery as a service (DRaas). I think it has ample potential. I have also developed a Powershell script that monitors a project environment end to end. It can identify if a site goes down, can automatically fix it and even send me a report on it. What started out as a minor automation can now become a product of its own.

Adopting a remote work business model: What do you need to look out for?

Enterprise-mobility-roll-out-What-are-the-key-enablers

Developing and implementing a foolproof Enterprise Mobility plan involves a well-organized thought process that considers all the possibilities, technicalities, obstacles, and risk factors. So, what exactly do businesses need to know about a plan for business mobility? There are more than just a few factors!   

Mobility has changed the way businesses interact with their key stakeholders. While enterprise mobility is becoming a necessary organizational strategy, companies are finding it challenging to implement this across the board. Here are a few things to keep in mind while rolling out a mobility strategy in your organization.  

Always Keep the Big Picture in Mind   

Even before an enterprise mobility plan is put in motion, businesses should first ensure that they understand what business mobility is and why they need it. Around the same time, they need to assess how much experience they have in the area of emerging technology and what the organization will accomplish by implementing these innovations. It is important to determine the means of business mobility and understand what you want your end goal to be in terms of business outcomes. Switching to mobility is a change that involves a considerable paradigm shift, and it is important that the change takes place smoothly. It is also important to understand how your key stakeholders’ interface with your business and consume your business products and services, and then, understand whether mobility will give you opportunities best befitting the consumption.  

Identifying the Appropriate Approach  

The next step is to build a holistic plan that encompasses all the criteria and requirements of business mobility, including buy-in time and engagement from decision-makers as well. When the organization decides how business goals and priorities can be best guided by mobile applications that will help improve employee engagement and company sales, a program of strategies would have to be initiated. The mobility strategy for businesses includes clarifications on the company’s digital maturity level, company’s vision, employee training requirements, information and safety requirements, mobile technology implementation and incorporation, customer experience effect.  

There are three basic approaches to building a mobile app – mobile, native, or hybrid apps. Deciding upon which one works best will help in the transition better. For instance, if you’re taking your first step into the world of mobile, responsive websites are perhaps a better bet. While native mobile apps are custom made, they are a lot more dynamic and engaging. Hybrid Apps are a combination of native apps and mobile sites.

Ensuring Continuous Application Delivery  

It is important to understand that the mobile is a device that offers frequent updates that are consistent, for the end-user. Mobility will, therefore, require a good number of revisions, shorter development cycles, and support across a range of mobile platforms. An organization should have specialized personnel and technology infrastructure to develop the tools that can help make this transition better.   

Managing Data  

If your enterprise generates a large amount of data, building a mobile infrastructure around your existing data capabilities is critical. It is important to understand how your key stakeholders interact with their mobile devices and ensure that they have access to the data they require. Through mobile applications, data can be delivered anywhere & anytime thereby resulting in increased productivity and operational efficiency.  

Rely on an End-to-end Security Strategy  

As the workforce becomes mobile, it is more challenging for organizations to secure their data. Taking appropriate security measures is critical while implementing a mobile strategy. It is important to allow employees to access data when they need it, while not allowing them to store in their devices. While empowering workers to get the most out of their devices and applications, appropriate policies and security solutions should be enforced for users, applications, and devices respectively. Remote access for authorized users, encrypting information, data leakage protection, identity, and access management, policy management and compliance reporting are some of the key security measures enterprises should adopt.  

Can a Monolithic team handle Microservices?

Can-a-Monolithic-team-handle-Microservices

 

As monolithic structures become too big to manage, many companies are drawn to migrate to microservices. It’s a worthwhile trip, but it’s not simple. To do this well, we need to start out with a simple service and then build services based on vertical capabilities that are essential for the company and are subject to frequent changes. Such services should at first be broad and ideally not depend on the remaining monolith. We should ensure that every migration step represents an improvement on the architecture as a whole.

Migrating from a monolithic architecture to microservices is an epic journey. Those who embark on this journey have aspirations such as increasing the scale of operation, accelerating change pace and escaping the high cost of change. They want to increase their number of teams, allowing them to deliver value in parallel and independently of each other. Companies want to experiment with their core capabilities rapidly and deliver value faster. They also want to escape the high costs of changing their existing monolithic systems.

Which capacity to decouple, when and how to migrate incrementally – are some of the architectural challenges of decomposing monolith structures to microservice ecosystems. In this write-up, we discuss how a monolithic team can handle microservice applications.

Tools are Only Enablers

Teams stepping onto the right path still need to master using DevOps and CI/CD pipeline to democratize their development. Microservices enable scaling for DevOps team. DevOps enables development and deployment of Microservices application without any interference. It eliminates bottlenecks that were prevalent with the traditional approach.

Knowing how to use a tool is only a journey begun. It brings up the issue of managing the compartmentalization. Tools are enablers for its users, and they need to be put into use with right intent and purpose so that it gets to the destination faster. Developers and architects need to be experts while designing and developing the system, moreover, be capable of coordinating across multiple teams and services. Each compartment should be able to run independently and, at the same time, be prepared to shut off when running into issues with a higher level of fault tolerance in the system.

Automating continuous delivery and testing pipeline requires the right know-how to foresee challenges. Scripting your infrastructure and testing to be run on automated requests makes it easier to manage the system-level changes and better handle issues.

Cloud-Native Development

While deploying applications on cloud is more of a norm these days, so is cloud-native development, which allows to take advantage of the cloud computing model. This makes containerization & orchestration more manageable while helping detecting errors before releases. While most teams already know how to manage cloud applications, cloud-native development still needs upskilling.

Model Microservices Team

Just by changing the way of writing a mammoth-sized application into smaller manageable chunks, it doesn’t fix the issue of writing incorrect code or having poorly tested applications. Previously, where you couldn’t bring in an expert team to handle the non-core part of your application, now it can be readily developed with the use of external teams.

This also enables an accelerated approach to shift the mindset with model teams. While we expect Microservices to allow the development of various services simultaneously, we can’t have teams incrementally upskilling to handle Microservices and DevOps. Outsourcing plays an active role in maintaining your development’s velocity and momentum while raising the benchmark for your existing team. This combined approach has helped many customers see value early in their lifecycle and become flexible in handling changing circumstances.

Structuring the A-Team

A large portion of this transition to Microservices and DevOps still banks on the organization changing its way of collaborating and developing applications. New age product companies that started with Microservices ecosystem in their culture still run into problems because of this fundamental shift lacking. Most companies end up creating horizontal teams to handle services. Why? Because that’s easy to put on to the Project Management tool and look at productivity charts.

Now that we have established teams as the enablers of change, it is necessary for some reshuffling in the thought process and thus the way teams are structured:

Accountability: Having compartmentalized services also means having compartmentalized responsibility. Accountability starts with detailed specs being written and communicated to all parties involved. This makes outsourcing chunks of work to external teams easier and efficient.

Vertical Teams: Giving up the traditional horizontal team structure for APIs, Data, Front-end, and Back-end services, instead of adopting siloed and independently-run teams that take ownership of each of the services, becomes the apt practice. This leads to the rise of full-stack developers being able to manage different aspects of the services. Each service team will thus have its API members, developers, data engineers, and testers.

Communication via API: Think of running the services as a mini software and communicating with other services using APIs. Communication between services becomes crucial for compartmentalization and the only way to measure the overall application’s performance.

Rise of Integration Testing: It’s time to give some rest to the old methods of testing while giving the mantle to integration testing. As system failure gets compartmentalized, the points of failure are detected at the integration points for your team to identify issues. This also gives the commandment that each service should be written keeping in mind that the service in its entirety can be rewritten or fixed within a day.

Diversity in Technology: Due to the modular nature of Microservices, it becomes easy and obvious to choose the right technology or framework for the service instead of relying on a single technology for the development of an entire application. The technology preference of your team takes huge precedence in the selection. CTOs are often asked to choose a technology based on the team’s preference, while in a parallel world, there are those CTOs who restrict the technology giving stability an important consideration over team’s preference. This goes to say that CTOs have a huge role in foreseeing challenges even before they occur.

Distributed Governance: Similar to how testing is simplified at the service level and priority is given to integration points, governance can also be managed at the aspects of communication between services. This can be handled with well thought out planning and an effective method to handle changes. When you distribute or decentralize governance, don’t forget to impart the importance of responsibility from each team member.

Conclusion

Microservices are far-reaching, but should not be taken lightly because the greater the reward, the higher the risk. New Age Product companies made incredible strides in embracing the microservices ecosystem and Digital Enterprises chartered their 2-year roadmap to revolutionize the strategy to software development. There is still a lack of adequate talent to scale Microservices to its true potential, however. Upskilling and outsourcing should be seen as parallel courses of action instead of alternatives for an effective change in strategy.

 

This is how TVS Next helped a client implement microservices to drive innovation

 

Our client, a leading player in the education space, had a monolithic structure and was facing issues restricting the team from innovating. Scalability, inability to incorporate new business requirements swiftly and many other problems in the deployment infrastructure had to be overcome, rapidly.

After a comprehensive assessment and due diligence that encompassed all aspects of their business and technology landscape, TVS Next helped them migrate to Microservices application.

The processes of development, testing, deployment, troubleshooting, upgrading, and maintenance became more streamlined and efficient.

Robust processes governed the execution & governance structure with constant stakeholder reviews, and the transformation from legacy monolith to robust Microservices was established in 8 months.

Smart transition of testing and automation for enhanced customer experience

blog cover

How testing and automation transform customer experience

“Testing is an infinite process of comparing the invisible to the ambiguous in order to avoid the unthinkable happening to the anonymous.”— James Bach

The expedited pace of software evolution and intense market competition has put customer experience in the limelight. This has improved the understanding of an organization’s strategy to deliver the most excellent customer experience. The top-notch customer expectation is not expected anymore. Due to continuous improvement in test automation, it has become a necessity.

Testing can add extensive value during the development phase by preparing experience to pull in customer acumens for achieving concerns that influence customer experience. A tester must spend considerable time on the following perspectives while experimenting to efficiently facilitate a top-notch customer experience.

Understanding the Customers

Getting to know the customers and a focus on customer experience can help testing capability of an organization build preferences before planning the tests. It is fitting for a QA company to consolidate method of “thinking from the customer point of view” into its testing technique. A software developer can ensure that testing is befitted to customer demands if they simply conjecture likings of the customers, accompanying their expectations about functionality, performance, and security of a software product.

Validating Requirements Related to Customer Interactions

Software Testing can improve customer experience by tailoring testing means following the expectations of customers. For developing customer content with a software product, automation testing needs to understand customers and test functional and non-functional traits of product. This helps the need to define and validate demands related to customer synergies. Testing it ease the navigation, speed, performance on different devices, and seamless working of proposed functions.

Testing to the Existing QA efforts

Customer Experience Testing is a user-centric method that can be used by a software testing company for its technical testing methods. By testing the real user performance with a software output, testers can enhance customer experience by making innovative additions to performance of test plans. Testers can simply recognize the significant concerns in the product because of the various external variables rooted in the Customer Experience Testing process.

Conducting a detailed Performance Testing

In-depth review testing is crucial for enabling a top-notch customer experience because it guarantees that testing has taken place completely to test a software product. With an importance on customer experience, Software testing can be stretched beyond capacity rate to consider all the circumstances that can probably affect overall user experience. These factors may include launch time, RAM usage, and battery usage of the software application under testing.

Evaluating Customer Feedback

Testing can efficiently expand customer experience if they have adequate admittance to the data furnished by the customers. The customer concerns and opinions collected by testers, by a customer, intercommunications can be planned for a forthcoming testing cycle so that the closing product can be heightened from the customer’s aspect of the best quality.

Other Factors in Customer Experience Testing Analysis

  • Emotions: Social channels can be used to attract individual emotions through social listening procedures and broadcasting the conclusions using real-time analytics, emotion analysis, etc. This will help the companies in recognizing flaws not found during development.
  • Crowd’s Wisdom: Crowdsourcing can be used as a medium to pre-launch end-user feedback by collecting demographically scattered masses that are culturally and socio-economically alike to the end-user.
  • Analytics: Delivering a diverse set of actions like personalization, administering records of multichannel and cross-channel browsing history, transactions, watching likes and dislikes across channels, etc. will offer a critical role in guaranteeing a seamless customer experience in the digital world.

 

Conclusion

An organization can react to both fixed and irregular product malfunctions on time so that the customers do not opt for a competing organization. Customer Experience Testing makes the test automation enhance the customer experience, thereby empowering them to help an organization implement the best potential exposure to its customers, draw new customers, and retain existing customers.

By implementing the key automation technologies, organizations can swiftly improve the way customers perceive and measure business. In well-improving customer service, automation can diminish individual error, enhance operator assurance and post-haste change the credibility of an organization. By connecting the gap between firm and client, the organization have become customer-centric and will allow more time to dedicate to the further growth of the organization.

 

Life lessons from our youngest Tech Lead

Alex Thompson Culture August 2, 2021
Life lessons from our youngest Tech Lead

We generally hear a lot of developers say that they always knew they wanted to be a techie. That was not the case for me. My background in engineering was in Electronics and Communication. I was one of those students who couldn’t sit through writing yet another calculator program or doing a palindrome check. But everything changed once I started coding professionally.

A first time for everything

It was a whole new world of problem solving, analysis, scenario-based reasoning and logic. I soon realised that I enjoyed it! Writing code was just the final step in the process. I was working with AS/400 (now Cgidev2) at the time, when I came across the opportunity to interview with TVS Next. I joined as a second member to the team working with a large US based healthcare facility.

Part of the engagement was to develop web applications on top of the existing client system, and I had no prior experience with web-based applications. The next 2 months were a period of rapid learning where I learnt on the job, in addition to taking web programming courses through e-learning at work. My first year at TVS Next made for an incredible experiential journey of learning and meeting challenges head on. All the effort I put in paid off and reflected in the form of appreciation notes from impressed clients who extended our engagement.


An ode to learning

At the end of my first year here, I was promoted to Senior Software Developer. Our team grew, and the following year, I was offered the opportunity to lead the team. I’ve always believed that growth is all about moving out of your comfort zone. So, keeping myself open to newer challenges worked in my favor. It’s also one of the best things about TVS Next. They firmly believe in everyone’s potential.

Today, I lead a team of people that I love working and interacting with, just as much as I’ve come to love coding. But I continue to stay hands-on. A good chunk of my day goes off in managing the engagement with the client and my onshore counterparts. I prioritize my team’s needs, making sure we’re all on the same page, and helping them out whenever they get stuck. The rest of my time is spent coding and learning new things.

Celebrating small wins

Not everything you do has to have a major impact. There are applications that I’ve developed on my own. Knowing that what I developed works well within a system of 300 odd applications is a matter of pride, even if the functionality is minor.

Being around inspirational people also teaches you a lot. I didn’t plan to become a team lead. But I’ve always looked up to the people here leading and representing their teams. I wanted to be just as inspiring.


Looking ahead

A major part of my future plans is learning. The current client will soon undergo modernization of their legacy systems. I want to learn the new tech stack so that I can continue to be part of the engagement.

I’m still new to this lead role and I want to be better. I’ve worked out a parallel path with my internal mentors, to learn project management and become a certified scrum master. A little further into the future, I see myself taking on data engineering. It seems like an interesting space with huge potential.

The makings of a good developer

I’d say a good developer needs 3 things. Analytical skills and programming are key to getting tech work done. But efficiency is just as important. It’s not about the hours you spend working, but how much work actually gets done.

The other thing any developer would benefit from, is looking at the big picture. Even a single line of code can impact the entire system. So always looking out for and being mindful of how your code interacts with other components and applications, is a necessary skill.

I’m also a firm believer in “anybody can code”. I know from experience that coding doesn’t need to come naturally, for someone to be a good developer. All you need is the focus, and the logical understanding of how it works. There’s absolutely nothing to be afraid of.

Let's talk about your next big project.

Looking for a new career?