How to Get Started With DevOps: Queries of a Startup Founder
As a startup founder, why should you know about DevOps? To answer that question, you need to avoid the most common mistakes similar ventures make when they start. Financial concerns aside, most startups experience challenges with timely product release, team collaboration and processes establishment, product quality, and customer satisfaction, to name a few. What if we were to tell you that all notable corporations are using one key tool to address the above challenges, and you can have a head-start if you instill that key tool into your startup from conception? Yes, you guessed it right! That key tool, being heavily adopted, is DevOps.
To answer all the above questions, we invited Ali Khayam to our Xgrid Talk series. Dr. Ali Khayam is currently working as a GM-SDN and Internet Services at Amazon Web Services (AWS). Being an expert on the subject, Dr. Ali sat down with us to help us navigate the web of DevOps.
What Is DevOps?
The split ownership model that the software is built, tested, and operated by separate teams is debunked by DevOps. In DevOps, you build it, you run it. The concept has been in practice but it became mainstream with the introduction of cloud technology. Since the servers and networking infrastructure are no longer managed by the developers on site, it is reasonable for the developer team to run the software in production as well.
What Is CI/CD?
CI stands for Continuous Integration whereas CD stands for Continuous Deployment. CI/CD is the tool that enables the DevOps philosophy to be implemented. Continuous Integration is an automated build and test process. It is a huge improvement on the manual testing which was a very tedious procedure with enormous test plans and spreadsheets. Continuous Integration has eliminated the requirement of dedicated quality assurance teams. With CI, the software developers are the ones that create automated tests for each check-in. This allows for each commit to be tested before becoming a possible cause of regression for your existing software. If any of the commits are not working as expected or any packages are not built, CI will prohibit merging that commit to the repository. CD will then deploy the software without human intervention.
What Are the Benefits of DevOps?
Rendering quality assurance and deployment teams unnecessary is the most cost-effective benefit for an organization. DevOps also reduces time to market and enables more ownership among the development team since they oversee the end-to-end process of development.
What Steps Does a Startup Have to Take To Implement DevOps?
If a startup has not yet been using the DevOps methodology, the team needs to be brought on board. First, they need to understand that their role is no longer confined to the development of software and unit testing but they need to build functional and system tests as well.
The automation of the CI/CD pipeline will require the organization to choose from an array of tools already available. Depending on your use case and where your workload is hosted, plays a vital role in selecting a tool. For example, most public clouds offer inbuilt CI/CD options. For data centers, you have Jenkins among other options. In the case of a SaaS platform, you have CircleCI, TravisCI, etc. for CI while Argo CD, Flux CD, etc. for CD.
It is a common misconception that DevOps cannot be opted until monolithic architecture is dissected into microservices. If test frameworks are not available, it will be worthwhile for startups to hire developers that can develop those testing frameworks to automate the monolithic architecture.
Once the right tools for your CI/CD pipeline have been identified and implemented, the next step is to iterate the process to make the product better and/or scalable for your application architecture.
What Employment Profiles fit a DevOps Team?
In order to understand the role of a DevOps team, we need to understand the software stack and its operations. Applications run on an infrastructure and the DevOps software stack needs a host for this infrastructure which provides the orchestration layer for the developers to write application software.
This is where DevOps engineers come into play. However, all developers should be DevOps engineers where they should build, test, and deploy the application. Apart from DevOps, other profiles are Site Reliability Engineers (SREs) and Infrastructure Engineers.
The infrastructure engineers manage the IaC. Developers write the application and their own test cases. The responsibility of the performance of the code resides with the developer. The role of SREs has cross cutting concerns, it is to make sure that your entire infrastructure and all the applications are working as expected.
What Is the Path to Transition From Traditional Development to DevOps?
If you’re just starting, the fastest and easiest way to get familiarized with the concept of DevOps is using a cloud-based solution or a SaaS product. The models built in these platforms are portable and comparable to the legacy infrastructure.
What Key Performance Indicators (KPIs) Do You Have in Place for DevOps?
The KPIs remain the same for traditional application development and DevOps application development e.g. transaction per second, latency of API calls, and such. The DevOps methodology applies to the way the development is done by changing the responsibility from multiple teams to one team so KPIs for both environments do not vary significantly.
Infrastructure as Code (IaC): Is It the Underlying Theme for DevOps?
IaC is a widely adopted practice. It helps remove misconfigurations from the product deployment process. With IaC, the scalability and replication of the stack has become effortless, in contrast to legacy systems where the time and error-prone human elements were part of the parcel.
Every cloud service provider or SaaS offering provides you with an Application Programming Interface (API) service. The developers write code on top of that API surface. The next time if the startup needs to replicate that stack, only the name of the region has to be changed and the same stack will be up and ready in another region. The flexibility that comes with DevOps using IaC is massive in scale; the extent of which can be seen in the fact that these high-level abstractions are available in simple config-based languages that allow the API calls to be seamless.
What Tech Stack in DevOps Development Do You Suggest?
The Tech Stack selection is a decision that is based on where your startup has its workload. If it’s on Cloud or AWS to be specific, Cloud Development Kit (CDK) and CloudFormation are two native options. However, CDK is the new generation which is recommended.
Puppet, Chef, or Ansible automations are other options available on the cloud which are feature-rich. They are quite similar in terms of functionality. Ansible is an SSH infrastructure which is easy to set up and manages everything through SSH commands and provides an automation of abstraction on top of that.
Puppet and Chef are more full-blown languages that have their own management channels and offer separation of config from everything else in code. In conclusion, it really depends on what employment profiles you have and how long do you have to bootstrap the development process. With IaC, it is recommended to select it carefully, keeping time, effort, and skill sets in your hands. It takes longer to onboard developers on Puppet and Chef but they offer more flexibility.
Your use case factors in while choosing an automation for your development process. Whether it is a front-end or a back-end application and what languages are being used for the application.
In case of CI/CD, you make a decision based on if you are developing fully on-prem or are using cloud-hosted facilities or have a hybrid infrastructure or what your budget allows you. Jenkins is cheaper, hence a good place to start. Deploy to CD frameworks, many of which work on top of Jenkins seamlessly. Jenkins offers its services on cloud as well. Nevertheless, clouds offer their native options such as code deploy or code pipelines as well.
For cloud management specifically, the native cloud-offered services are recommended because they provide a much richer experience as they are better integrated features. The application management and performance monitoring can be done with external sources but for Cloud itself, the native solutions are best.
For security, since it is a layered construct, I would recommend taking full advantage of cloud-native security offers at the base. On top of it, there is a communication layer with anomaly or intrusion detection. There are SaaS and cloud-native solutions available to tackle this and can be chosen keeping your startup in mind.
How to Bring Culture Change in a Startup That Started With Legacy Architecture?
If you inherited a team of developers with legacy architecture, the cultural change as well as structural shift in the team is inevitable. Change mindsets. Hire strong team players who can build automations and improve the performance of the development process in a timely fashion.
What Has Been the Adoption Rate of DevOps Among Corporations, SMBs, and Startups?
The market segmentation is not based on the size of the company but how long a company has existed. New companies find it easier to start with DevOps. The more established companies that started with legacy architecture, however, are slow in their transition to DevOps. Companies such as AWS and Netflix are exceptions to this general trend.
While transitioning from development and operations team to a consolidated DevOps team, start with the QA team and ask them to automate their operations. They can learn how to build and integrate every check-in and then can be integrated with the development team.
Has DevOps Made It Harder for Employers to Find These Employment Profiles?
DevOps has made the process of application development faster. I would say, the developers’ mindset hasn’t shifted as quickly as the technology. This gap exists because universities have not changed their curriculum. The graduates are not familiar with DevOps terminologies.
What Would You Recommend to a Legacy Engineer to Learn to Be Reskilled?
All the SaaS, Cloud, and CI/CD companies have built a lot of training material around their services. So pick your technology stack and get started!
Three Pieces of Advice for Startups Who Are About to Start Their DevOps Journey
Start early. Invest your time and effort into building quality IaC and testing frameworks even if it means your first 2-3 rollouts take longer. Worth it. Secondly, be very clear on the KPIs of your success and the metrics of your product development health and output. Lastly, iterate and keep the metrics and parameters tight throughout the journey. Do not let the culture corrode around the edges. It is easy to regress to legacy methods if you are not vigilant throughout your DevOps journey.