Read Time:7 Minute, 33 Second
1. Who is a Developer?
- A developer is an individual that builds and create software and applications. He or she writes, debugs and executes the source code of a software application. A developer is also known as a software developer, computer programmer, programmer, software coder or software engineer.
- Computer programmers write, test, debug, and maintain the detailed instructions, called computer programs, that computers must follow to perform their functions. Programmers also conceive, design, and test logical structures for solving problems by computer. Many technical innovations in programming — advanced computing technologies and sophisticated new languages and programming tools — have redefined the role of a programmer and elevated much of the programming work done today. Job titles and descriptions may vary, depending on the organization.
2. Typical tasks of a Developer?
- Researching, designing, implementing, and managing software programs.
- Testing and evaluating new programs.
- Identifying areas for modification in existing programs and subsequently developing
- Writing and implementing efficient code.
- Determining operational practicality.
- Developing quality assurance procedures.
- Deploying software tools, processes, and metrics.
- Maintaining and upgrading existing systems.
- Working closely with other developers, UX designers, business and systems analysts.
3. Who is an Operations person?
- Operations is the work of managing the inner workings of your business, so it runs as efficiently as possible. Whether you make products, sell products, or provide services, every small business owner must oversee the design and management of behind-thescenes work.
- IT Operations people are the process owners for the IT Operations Control process, the goal of which is to exercise and maintain control over IT services and the connected, underlying infrastructure. This includes overseeing the associated daily and routine tasks, such as workload scheduling, creating data back-ups, restoring systems after outages and other regular maintenance activities.
4. Typical tasks of an Operations person.
- Operations management (ITOM) can be defined as the process of managing and maintaining an organization’s network infrastructure. An IT team is typically tasked with this work, covering aspects of computing such as compliance, security, and troubleshooting. This team works with internal and external network users, offering advice and remediation to overcome technical obstacles and maintain effective
5. When Dev and Ops meet?
- The Development and Operations teams work in collaboration to minimize the effort and risk involved in releasing software. But how do you ensure collaboration? This is the question faced by many organizations. Well, you can introduce collaboration by ensuring that the Operations team is giving constant feedback to the Development team about the code, analyzing the impact considering end users and troubleshooting any problems together to gain stability of the product.
- DevOps enables a cultural change to remove the barrier between development and operations, working together for common set of objectives.
6. Typical issues between Dev and Ops.
- There’s not enough high-level data to inform application owners about application
- There’s not enough granular data to inform developers about application behavior.
- They come from different backgrounds.
- Development team knows more about software products and services.
- Operations team knows more about test and production environments.
- They have conflicting business goals and priorities.
7. Software Release Process (SRP)
- Software Release Planning (SRP) refers to the planning process that surrounds the release of a software program or technology product. It is critical to ensuring smooth migration from internal testing to a customer use environment.
8. Roles of Dev, Ops and Testing teams in SRP.
- Developers write code, test, debug, and maintain the detailed instructions, called computer programs.
- Operations are the activities information technology departments take part in to ensure an organizations’ devices and technology systems are running smoothly. This includes support for hardware, software, and internal and external IT systems.
- Software testing is an essential part of the software development life cycle (SDLC). Playing a significant role in defining the success rate of a particular product, owing to the same reason the software testing team plays a crucial role even after the product’s development is completed.
- Being experts in the problem domain make it easier for them to create such test scripts that make it easier to identify the problem in the product.
9. Application Release Automation (ARA)
- Application Release Automation (ARA) refers to the process of packaging and deploying an application or update of an application from development, across various environments, and ultimately to production. ARA solutions must combine the capabilities of deployment automation, environment management and modeling, and release coordination.
- ARA is a major requirement of contemporary DevOps teams practicing CI/CD in the software development lifecycle. Continuous Integration and Continuous Delivery (CI/CD) allows businesses to roll out new features to software applications quickly in production or apply security patches with little to no downtime.
10. Definition of DevOps
- DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
11. DevOps vs ARA
- DevOps is a set of practices, tools, and a cultural philosophy that automate and integrate the processes between software development and IT teams. It emphasizes team empowerment, cross-team communication and collaboration, and technology automation.
- Application release automation (ARA) is commonly defined as the process of modeling and deploying software products and configuring them for Java or other types of platforms. Application release automation supports “continuous release and deployment” and is often related to agile software development. It allows for more streamlined development and release of applications, artifacts and other software
12. DevOps Process
- The DevOps process flow is all about agility and automation. Each phase in the DevOps lifecycle focuses on closing the loop between development and operations and driving production through continuous development, integration, testing, monitoring and feedback, delivery, and deployment.
13. DevOps People
- A DevOps engineer introduces processes, tools, and methodologies to balance needs throughout the software development life cycle, from coding and deployment to maintenance and updates.
- DevOps is all about the unification and automation of processes, and DevOps engineers are instrumental in combining code, application maintenance, and application management. All these tasks rely on understanding not only development life cycles, but DevOps culture, and its philosophy, practices, and tools.
14. DevOps Tools
- Version Control Tools
a. GitHub: GitHub is considered as one of the largest and most advanced development platforms in the world. Millions of developers and companies build, ship, and maintain their software on GitHub.
b. GitLab: It is an all-in-one DevOps Tool for rapid software delivery. It enables teams to perform all tasks right from Planning to SCM to Delivery to Monitoring and Security.
- Container Management Tools
a. Docker: Docker is a light-weight tool that aims to simplify and accelerate various workflows in your SDLC with an integrated approach. A docker container image is a standalone, executable package that includes everything you need to run an application.
b. Kubernetes: Kubernetes is an open-source DevOps tool used to automate deployment and management of containerized applications & perhaps one of the most popular container orchestration tools.
- Application Performance Monitoring Tools
a. Prometheus: Prometheus is an open-source and community driven performance monitoring solution. It also supports container monitoring and creates alerts based on time series data.
- Deployment & Server Monitoring Tools
a. Splunk: Splunk is a monitoring and exploring tool that is used on SaaS and onpremises.
b. Datadog: Datadog is a SaaS-based DevOps tool for server and app monitoring having hybrid cloud environments. It facilitates monitoring of Docker containers as well.
- Configuration Management Tools
a. Chef: Chef is an open-source DevOps tool for automation and configuration management built by Erlang and Ruby.
b. Ansible: Ansible delivers simple IT automation that ends repetitive tasks and frees up teams for more strategic work.
c. Puppet: Puppet is responsible for managing and automating your infrastructure and complex workflows in a simplistic manner.
- CI/CD Automation Tools
a. Jenkins: Written in Java, Jenkins is an open-source platform for continuous integration and continuous delivery that is used to automate your end-end release management lifecycle. Jenkins has emerged as one of the essential DevOps Tools.
b. Bamboo: It is a DevOps tool to help you practice Continuous Delivery, from code to deployment. It gives the ability to tie automated builds, tests, and releases together in a single workflow.
- Test Automation Tools
a. Test.ai: It is an AI-powered automation testing tool to release apps faster and with better quality.
b. Selenium: Primarily used to automate web applications for testing purposes but can, also, be used to automate other web-based admin tasks.
- Artifact Management Tools
a. Sonatype NEXUS: Claims to be the world’s #1 repository manager, Sonatype efficiently distributes parts and containers to developers acting as a single source of truth for all your components, binaries and build artifacts.
b. JFrog Artifactory: Functions as the single source of truth for all container images, packages, and Helm charts, as they move across the entire DevOps pipeline.