Guide to becoming an Dev Ops Goddess
- 14.04.2020
- Azure Ai
- Y.Taylor
- London UK
Overview
Hey Beautiful people! Due to popular demand, I have created a document which will guide you to become a Dev Ops God/Goddess !
So how did I get here…
I only started to attract money after my spiritual awakening . I got closer to God and left the matrix and the finances and opportunities came .The main aim is not only financial freedom, but spiritual freedom also.Money is key
So before you read on , let’s get to the actual meaning of what Dev Ops actually is !
SO initially Dev Ops was referred to as an’ a set of practices that automates the processes between software development and IT teams, in order that they can build, test, and release software faster and more reliably. The concept of DevOps is founded on building a culture of collaboration between teams that historically functioned in relative siloes.’
For some strange reason it has now turned into a job title which means that you are likely to be doing more than one role under one title.
Being a Dev Ops God/Goddess isn’t for the weak, but if you are as crazy as I am please read on! But before we get to the exciting stuff here is a little about me :
‘’My name is Yasmin Taylor.I currently work as a Platform Engineer and Backend Engineer. I ensure that we are automating our pipelines accordingly and efficiently.
Originally I wanted to become an astronaut! So I’ve always been quite big on science.In college I studied applied science which consist of biology, physics and chemistry.I didn’t do as well academically as I thought I would have and got CCD.My parents have always supported me academically and it helped that my dad was a math genius so I learnt algebra quite early on.
My love of sci-fi movies predominantly led to my passion in tech.I saw from the movies how fun and easy having advanced tech made life seem- and it fueled my curiosity to create or imitate something similar.
My first step into tech was my course in university.I studied Artificial Intelligence and Robotics and it was during my time on this course I was introduced into the world of coding .One of the hardest things i’ve had to face during my time in tech was being the only person of color,only person from a working class background and the only female. It was very hard to convince them that I was more than capable of doing my job and it felt like I had to prove to them by going above and beyond that I deserve to be here.
I am a very spiritual person so with hard work and prayer I was able to calm myself down and understand that I am paving the way for others that look like me.’’
Goals
- Requirements
- Languages to learn
- Certifications to gain/Certification links
- Tools to learn how to use
- How to prepare for an Interview
- Where to find me
- References
Requirements
- Real good understanding of the operating system ,preferably Unix
- Understanding of networking protocols
- Get an understanding of build and release in a development environment . Be good at source control (GIT), CI tools for building ( Jenkins, maven) and deployment.
- Configuration management using Puppet/Chef/Salt/Ansible
- Understanding of container technologies like Docker and Kubernetes is a plus.
- Infrastructure knowledge AWS/VMWARE
- Be good at Shell Scripting / Python/ Java/ C sharp
Generally, people have lots of misconceptions regarding DevOps. So let me first tell you “What DevOps is not”.
- DevOps is not simply combining Development & Operations teams
- DevOps is not a separate team
- DevOps is not a product or a tool
- DevOps is not automation
What DevOps is actually?
DevOps is a culture that is being followed by a much huge organization.
It is a continuous process and contains various stages such as :
- Continuous Integration
- Continuous Development
- Continuous Testing
- Continuous Deployment
- Continuous Monitoring
The main role of DevOps is to increase the quality of the product to a great extent and to increase the collaboration of Development and Operation team as well so that the workflow within the organization becomes smoother.
It would be better if you know Python but any programming language such as Ruby, Javascript, C are also preferable to start with DevOps.
The DevOps job roles for which you can apply in 2020 are:
- Software Tester
- Security Engineer
- Application Developers
- Integration Specialist
- Site Reliability Engineer
- Platform Engineer
Languages to learn
Python
Ruby
Java
C sharp
Certification links/Certifications to gain
If you want to build your professional career in DevOps you can click the link below to enrol yourself to DevOps Certification and Training Course provided by Edureka. Udemy, AWS, GCP And Azure also provide training.
Pluralsight is also a good base to use and is offering free training !
DevOps course from Edureka is enough for you to become an expert in the domain. The course is precisely designed keeping in mind the current industrial requirement. This course will provide you with an in-depth idea about:
- Continuous Development, Continuous Integration, and Continuous Testing using GIT, Jenkins and Selenium
- Configuration Management, and Continuous Deployment using Puppet, Ansible and Docker
- Finally, you will gain insights by continuously monitoring the software using Nagios
DevOps Training & Certification Course with Live Training — Edureka
Amazon (AWS) -https://aws.amazon.com/certification/
Microsoft Azure — https://docs.microsoft.com/en-gb/learn/azure/
Tools to learn how to use
As technology advances, numerous DevOps tools have been developed to make collaboration and development easier. To help you refine your DevOps strategy, we mention top 10 DevOps tools which you should use in the year 2020:
1. Slack
Launched in the year 2013, Slack is still one of the top communication tools used by teams for effective collaboration on projects. This tool in the DevOps arsenal is used by technical organizations across the globe to tear down barriers and offer all team members a clear insight into the workflow. One exciting feature about Slack is that it allows developers to collaborate using toolchains in the same environment they are communicating with other maintenance and service members.
2. Jenkins
An open source continuous integration server, Jenkins automates the complete build cycle of a software project. The USP of this tool is the Pipeline feature it offers, which can be utilized by the developers to automatically commit code into the repository, run test cases, as well as fetch reports obtained after testing. This highly customizable tool provides instant feedback and hence will warn you if a particular sprint is leading to a broken build or is harming the same. Most of the tasks and tools involved in SDLC can be automated using Jenkins, allowing team members to increase their throughput.
3. Docker
Docker is a tool which is at the center of containerization, a trend which is quickly gaining momentum in the IT world. Docker allows secure packaging, deploying and running of applications irrespective of the running environment. Every application container contains the source code, supporting files, run time, system config files, etc. responsible for application execution. Using the Docker Engine, the containers can be accessed which in turn can execute applications in a remote environment. The app has allowed organizations to reduce infrastructure costs. According to a report, 2 out of 3 companies who have tried this application have adopted it within 30 days of using it.
4. Phantom
Security of software is one of the prime concerns of any DevOps team. As such, the Phantom tool comes as a great help to developers who wish to build a defensible infrastructure from the very beginning of SDLC. Using the phantom tool, you can collaborate in a centralized environment on an incident and be aware of the rising security threats at the same time. The tool further gives DevOps professionals an option to mitigate such risks instantaneously using techniques such as file detonation, device quarantine, etc.
5. Nagios
Similar to Phantom, Nagios is also a monitoring tool which tends to keep tabs on the applications, servers as well as your overall business infrastructure. The tool comes in as a great help for large organizations which have a countless number of circuitry (routers, servers, switches, etc.) in the backend. It alerts the users in case a particular fault occurs on the backend or any device fails. It also regularly maintains a performance chart and monitors trends to alert the user of a possible failure which may occur.
6. Vagrant
A vagrant is a tool for managing and working with virtual machines in a single workflow. Using Vagrant, team members can share software running environment and can test applications faster without wasting time on setting up configurations. The tool ensures that the environment for a particular project remains the same across every developer’s machine, and the excuse of ‘runs-on-my-system’ can be thrown out of the window.
7. Ansible
Ansible is one of the most simple yet effective IT orchestration and configuration management tools available in the market. Compared to its competitors such as Puppet and Chef, which are loaded with features, Ansible offers a softer outlook and doesn’t hog on your device’s resources in the background. This tool is primarily utilized for pushing new changes within the existing system, as well as configuring newly deployed machines. Lowering the costs of infrastructure and increasing the replication speed of scalability are just two of the reasons which have made this an absolute favorite amongst IT companies.
8. GitHub
Launched in the year 2000, GitHub remains as one of the top DevOps tools for easy collaboration. Using this tool, developers can make rapid iterations to the code, the notification of which is sent instantaneously to other team members. In case of any error or fallout, immediate rollbacks can be done to the previous version within seconds, thanks to the branched history of changes which are stored contiguously within the tool.
9. Sentry
Sentry, a tool used by companies such as Uber and Microsoft, is one of the best DevOps tools for error or bug detection. This free tool supports languages such as Ruby, IOS, JavaScript, etc. and further has inbuilt SDKs which can be customized for supporting most languages and frameworks. The tool continuously scans lines of code across the entire system and sends notifications if it finds an error or problem. Not only does it highlight the problem, but offers a choice of possible solutions which can be incorporated with a single click.
10. BitBucket
Similar to GitHub, BitBucket is also a tool which helps manage project code throughout the software development cycle. While GitHub still ranks as the top repository, people are shifting to BitBucket due to its reduced cost as well as the feature of the private repository (a feature only available in the paid variant of GitHub). While the core functionality of BitBucket resembles that of GitHub, features such as easy integration with Jira and Trello, inbuilt CI/CD functionality tend to give this tool by Atlassian an edge.
How to prepare for a tech interview
Started searching for jobs by using google and typing in the role there.Do some business development and generated some leads via Linkedin and connect to potential recruiters to source out new contracts.
Prepare for interviews by reading through the job spec and catching up with recruiters beforehand to ensure you are fully prepped.Also ask beforehand if there is an technical test to prepare for or revise and ask for any supporting materials to help .
Another key thing to do would do is look up my potential manager on Linkedin to get a feel of their character and also their position and check the diversity in the company .
First Interview Stage:
The first interview is usually a phone call just to check if you are human and if you are technically competent.
Second Stage:
The second stage is usually a face to face and a meeting with your potential manager and sometimes the team.Sometimes you are asked to do a presentation or a test.The next stage after that is usually an offer or rejection.
Below are some extra questions you are likely to be asked!
Can you tell us the fundamental differences between DevOps & Agile?
Answer: Although DevOps shares some similarities with the Agile methodology, which is one of the most popular SDLC methodologies, both are fundamentally different approaches to software development. Following are the various fundamental differences between the two:
- Agile Approach — The agile approach is only meant for development in Agile while the agile approach is meant for both development and operations in DevOps.
- Practices and Processes — While agile involves practices such as Agile Scrum and Agile Kanban, DevOps involves processes such as CD (Continuous Delivery), CI (Continuous Integration), and CT (Continuous Testing).
- Priority — Agile prioritizes timeliness whereas, DevOps gives equal priority to timeliness and quality.
- Release Cycles — DevOps offers smaller release cycles with immediate feedback while Agile offers only smaller release cycles without immediate feedback.
- Feedback Source — Agile relies on feedback from customers while feedback from self (monitoring tools) is involved in DevOps.
- Scope of Work — For Agile, the scope of work is agility only but for DevOps, it is agility and the need for automation.
Why do we need DevOps?
Answer: Organizations these days are trying to transport small features to customers via a series of release trains instead of releasing big feature sets. There are several benefits of doing so, including better software quality and quick customer feedback.
All such benefits lead to a higher level of customer satisfaction, which is the most important goal for any product development project. To do so, companies need to:
- Increase deployment frequency
- Lessen lead time between fixes
- The lower failure rate of new releases
- In case of new release crashing, have a faster mean time to recovery
DevOps helps in fulfilling all these requirements and thus, achieving seamless software delivery. Full-fledged organizations like Amazon, Etsy, and Google have adopted DevOps methodology resulting in achieving performance levels that were previously uncharted.
With the adoption of DevOps methodology, organizations are able to accomplish tens to thousands of deployments in a single day. Moreover, doing so while offering first-rate reliability, security, and stability.
What are the important business and technical benefits of using DevOps?
Answer: DevOps brings a lot of business and technical benefits to the table. Some of the most important ones are listed down as follows:
Business benefits
- Enhanced operating environment stability
- Faster delivery of features
- More time for adding value to the product
Technical benefits
- Continuous software delivery
- Faster problem resolution
- Lesser complex problems
Can you name some of the most-used DevOps tools?
Answer: Following is a list of some of the most widely used DevOps tools:
- Ansible — A configuration management and application deployment tool
- Chef — A configuration management and application deployment tool
- Docker — A containerization tool
- Git — A version control system (VCS) tool
- Jenkins — A continuous integration (CI) tool
- Jira — An agile team collaboration tool
- Nagios — A continuous monitoring tool
- Puppet — A configuration management and application deployment tool
- Selenium — A continuous testing (CT) tool
What is Selenium used for?
Answer: Selenium is used for continuous testing in DevOps. The tool specializes in functional and regression forms of testing.
What do you understand by Puppet in DevOps?
Answer: It is a configuration management tool that is used for automating administration tasks. Puppet makes use of the Master-Slave architecture in which the two entities communicate via an encrypted channel.
System admins need to perform a lot of repetitive tasks, notably installing and configuring servers. Writing scripts for automating such tasks is an option but it becomes hectic when the infrastructure is large. Configuration management is a great workaround for this.
Puppet helps in configuring, deploying, and managing servers. Not only does it make such redundant tasks easier but also cuts a significant portion of the total work time. The mature configuration management tool:
- Continuously checks whether the needed configuration for a host is in place or not. If altered, the configuration is automatically reverted back
- Defines distinct configurations for every host
- Does dynamic scaling (up and down) of machines
- Provides control over all the configured machines so that a centralized change can automatically get propagated to all of them
What do you understand by anti-patterns of DevOps?
Answer: When a DevOps pattern commonly adopted by other organizations doesn’t work in a specific context and still the organization continues using it, it leads to the adoption of an anti-pattern. In other words, anti-patterns are myths about DevOps. Some of the notable anti-patterns are:
- An organization needs to have a separate DevOps group
- Agile equals DevOps
- DevOps is a process
- DevOps is development-driven release management
- DevOps is not possible because the organization is unique
- DevOps is not possible because the people available are unsuitable
- DevOps means Developers Managing Production
- DevOps will solve all problems
- Failing to include all aspects of the organization in an ongoing DevOps transition
- Not defining KPIs at the start of a DevOps transition
- Reduce the silo-based isolation of development and operations with a new DevOps team that silos itself from other parts of the organization
DevOps has something called CI. What is it and what is its purpose?
Answer: CI in DevOps stands for Continuous Integration. CI is a development practice in which developers integrate code into a shared repository multiple times in a single day.
Continuous Integration of development and testing enhances the quality of the software as well as reducing the total time required for delivery.
The developer has broken the build if a team member checking in code runs into a compilation failure. As such, other developers are not able to sync with the shared source code repository without introducing compilation errors into their own workspaces.
This disrupts the collaborative and shared development process. Hence, as soon as a CI build breaks, it’s important to identify and correct the problem immediately.
Typically, a CI process includes a suite of unit, integration, and regression tests that run each time the compilation succeeds. In case any of the aforesaid tests fail, the CI build is considered unstable (which is common during an Agile sprint when development is ongoing) and not broken.
More often than not we hear shift left in DevOps. What is it?
Answer: The traditional software development lifecycle when graphed on a paper has two sides, left and right. While the left side of the graph includes design and development, the right side includes production staging, stress testing, and user acceptance.
To shift left in DevOps simply means the necessity of taking as many tasks on the right i.e. that typically happens toward the end of the application development process and incorporates them into earlier stages of a DevOps methodology.
There are several ways of accomplishing a shit left in DevOps, most notably:
- Create production-ready artifacts at the end of every Agile sprint
- Incorporating static code analysis routines in every build
The level of doing the DevOps the right way is directly dependent on the degree of shifting left as much as possible.
What does CAMS in DevOps stand for?
Answer: The acronym CAMS is usually used for describing the core creeds of DevOps methodology. It stands for:
- Culture
- Automation
- Measurement
- Sharing
What are the several KPIs used to gauge DevOps success?
Answer: KPIs is a contracted form of Key Performance Indicators. In order to measure the success of a DevOps process, several KPIs can be used. Some of the most popular ones are:
- Application performance
- Application usage and traffic
- The automated test pass percentage
- Availability
- Change volume
- Customer tickets
- Defect escape rate
- Deployment frequency
- Deployment time
- Error rates
- Failed deployments
- Lead time
- Meantime to detection (MTTD)
- Mean time to recovery (MTTR)
In your opinion, what are the major benefits of implementing DevOps automation?
Answer: Following are the major benefits of implementing DevOps automation:
- Removal of the possibility of human error from the CD equation (Core benefit)
- As tasks become more predictable and repeatable, it is easy to identify and correct when something goes wrong. Hence, it results in producing more reliable and robust systems
- Removes bottlenecks from the CI pipeline. It results in increased deployment frequency and decreased number of failed deployments. Both of them are important DevOps KPIs
What do you understand by containers?
Answer: Containers are a form of lightweight virtualization that help in providing isolation among processes. Containers are heavier than a chroot but lighter than a hypervisor.
Microservices are a core part of DevOps. Can you name any two popular Java development frameworks for creating microservices?
Answer: There are several Java frameworks that allow creating microservices. However, Eclipse MicroProfile and Spring Boot stand out from the herd as the two leading Java development frameworks used in DevOps for creating microservices.
What do you understand by a Version Control System (VCS)? Define its uses.
Answer: A Version Control System or VCS is a system that is capable of recording changes made to a file or a group of files over time. Git and Mercurial are two of the most popular version control systems. Important uses of a VCS are:
- Check what was the last modification that caused a problem
- Compare the changes made over time
- Identifying who introduced a new issue and at what time
- Revert a file or files to some earlier state
- Revert the complete project to a previous state
Git is a popular DevOps tool. Tell us how you will revert a commit that has already been pushed and made public.
Answer: There are two ways of doing so:
- By creating a new commit to undo all changes made by the commit that has already been pushed and made public. Following command is used for doing so:
git revert - By fixing or removing the bad file in a new commit and then pushing it to the remote repository. After making necessary changes to the file, commit it to the remote repository using the command:
git commit -m “commit message”
What are post mortem meetings?
Answer: Many times there is a need to discuss what went wrong during a DevOps process. For this, post mortem meetings are arranged. These meetings yield steps that should be taken to avoid the same failure or set of failures in the future for which the meeting was arranged in the first place.
Draw a comparison between Asset Management and Configuration Management.
Answer: The process of monitoring as well as maintaining things of value to an entity or group is called an Asset Management.
Configuration Management refers to the process of controlling, identifying, planning for, and verifying the configuration items within service in support of Change Management.
Can you state and explain various key elements of continuous testing?
Answer: Various key elements of continuous testing are:
- Advanced analysis — Used for forecasting and predicting unknown future events
- Policy analysis — Meant for improving the testing process
- Requirement traceability — Refers to the ability to describe as well as follow the life of a requirement, from its origin to deployment
- Risk assessment — The method or process of identifying hazards and risk factors that can cause potential damage
- Service virtualization — Allows using virtual services instead of production services. Emulates software components for simple testing
- Test optimization — Improve the overall testing process
Please explain the core operations of DevOps in terms of development and infrastructure.
Answer: Core operations of DevOps in terms of development and infrastructure are:
- Application development — Developing a product that is able to meet all customer requirements and offers a remarkable level of quality
- Code coverage — a measurement of the total number of blocks or lines or arcs of the code executed while the automated tests are running
- Code developing — Prepare the codebase required for the product development
- Configuration — Allowing the product to be used in an optimum way
- Deployment — Installing the software to be used by the end-user
- Orchestration — Arrangement of several automated tasks
- Packaging — Activities involved when the release is ready for deployment
- Provisioning — Ensuring that the infrastructure changes arrive just-in-time with the code that requires it
- Unit testing — Meant for testing individual units or components
Where to find me
YouTube : https://youtu.be/KdjrWtp0Q0I
Twitter : https://twitter.com/i0sTaila
References
https://hackr.io/blog/devops-interview-questions