DevOps in a software development lifecycle
Over the last decade, companies have started moving from the conventional software development methodologies and are adapting to an Agile fashion. Embracing this new style has opened doors to a holistic end-to-end software delivery lifecycle. Think about the main goal for your business? Keeping a client happy or meeting their expectations? Collaboration between your operations, quality assurance, development, and management teams is a key to hit the target. DevOps is a culture, practice and selection of right tools which drive an organisational team towards delivering software and applications at a much faster rate.
With a plethora of tools and techniques present in the community it becomes difficult to pick the set which suits your needs the best. Based on our recent experiences inculcating DevOps at our organisation, PRDXN has key To-Do’s and NOT To-Do’s to share with the technical community.
Develop a culture
The first and foremost step is setting up the foundation for DevOps. You need to take steps for enabling different teams collaborate, share intellect and gear up for success. Break down Cloud sandboxing, continuous integration tools and other technical solutions help enforce a collaborative culture. Build a right balance between selecting right tools and nurturing a culture. Optimize the workflow between teams.
Pick the right tools
The essence of this topic is really picking the right set of tools to prep up your team towards achieving the ultimate goal of DevOps, Continuous Delivery. You will find numerous companies offering ample of solutions, don’t get lost! Identify your teams requirements and align it with your overall product roadmap.
What tools did we prefer or choose & Why? Let us find out:
Jenkins — For managing and describing the deployment process, Jenkins made our lives easier. We always knew if our build broke or if something critical required our attention. It is open source, user-friendly and easily configurable.
GitHub & Git: The best option for tracking and controlling your software versions are undoubtedly Github and Git. Apparently, they are not only popular but easily accessible and customisable.
AWS: AWS server is scalable to maintain complex environments and comparatively easy to set up. We utilised AWS as an instance for Jenkins and even as a hosting server to keep the code files.
If you want to be successful IT firm, quality is one of the key. Incorporating automated testing will improve the quality of the code, data and the overall product. In an Agile environment, testing needs to be continuous. Test-driven development will help you build a consistent delivery pipeline.
Selenium — The ROI after reducing your manual testing efforts and using a tool such as selenium is huge. We used Selenium in a separate repository but it helped us finding bugs at early development stages saving the team a lot of time.
Jest — Our product was a React app with Node Js, Jest fit in just right to perform unit tests.
You need transparent and open communication between your development and operational teams for getting a speedy output. We believed in logging everything right from requests to bugs to ascertain that no ad hoc tasks happen outside the DevOps process.
Team Tool Selection?
Slack — For internal communication we created a group on Slack, lot of information was shared between us and the client, EXHAUSTING! I wouldn’t deny if the team had their fun at times, but when it came to maintaining focus, they never backed down either.
Jira — It’s a paradise for the wider team to track the work in progress or in QA else completed. JIRA provides the flexibility to plan for a faster output and maintaining clarity.
NOT TO DOs:
Don’t expect immediate results:
DevOps is a culture and it will take time for your team to inculcate. Rome was not built in a day, neither is DevOps. If you ask us, it’s a gradual process but the end results are amazing. Remain focused on your plans, don’t hesitate to innovate — there will be cultural shifts but common, it ain’t the end of the world. Remain focused, build on the momentum and when you touch the finish line, success will be waiting for you.
Don’t forget Security:
Be it Jenkins or AWS or any channel you utilise, Security is of paramount importance. We follow and create a lot of best practices to avoid any security breach. Adding a few below for you guys to adapt:
- Maintain a google doc and the sharing should be open to only specific people. The option of keeping only the things you want in this doc should be based on your discretion.
- Setup an IAM user for jenkins. Have a username and password too.
- SSH tunnels should be only granted to whitelisted IP addresses.
- Avoid keeping your AWS keys in public or private repos.
Any of the tools we picked during the entire application development life-cycle helped us save both time and money at the same time. If you take our advice and are looking forward to eliminate organisational bottlenecks, encouraging your team to collaborate, try DevOps. You find our tips helpful, share it with community and let us know if you want us to write more about topics you would like to read.