What actually means the DevOps concept?
When we talk about the new DevOps concept, we mean a mixed cultural and philosophical change of mindset that includes new development practices and tools that increase the organization’s ability to provide their applications and services in a faster way: develop and improve products faster than organizations that use traditional software development and infrastructure management processes. This speed allows organizations to better serve their customers and compete more effectively in the market.
Following DevOps development model, the development and operations teams are no longer “isolated”. Sometimes, the two teams merge into one, where engineers work throughout the application’s life cycle, from development and testing to implementation and operations, and develop a variety of skills not limited to a single function.
DevOps methodology allows the teams to full automate processes that have previously been manual and slow by using a stack of technology and tools that helps to improve fast and make reliable applications. Another important improvement is related to the feedback stage at the end of the development of the lifecycle that brings the pipeline visibility and show all the quality delivered during the process, issues detected and more in order to improve in an loop way the process.
may help you?
Why DevOps is trending on development?
Software and the Internet have transformed the world and its industries, from shopping to entertainment and banking. Software is no longer limited to supporting a business, but becomes an integral component of every aspect of it. Companies interact with their customers through software provided as applications or online services on all types of devices. They also use software to increase operational efficiency by transforming each section of the value chain, such as logistics, communication and operations. Just as physical product companies transformed the way they designed, manufactured, and delivered products, thanks to the industrial automation that occurred in the 20th century, today’s companies must transform the way they create and deliver software.
How to start with DevOps approach?
The continuous integration is a development workflow process where we merge the code changes in a shared core repository. After push the code to that repository, a trigger start in a autonomous way the configured quality tests. The key goals in this CI are : find and solve bugs faster, improve the delivery quality and minimize the time needed to validate and publish new software updates.
The microservices architecture is a development design that consist of spread big services into little API that interact each others within a light interface. This methodology simplify a lot the software design because all the API has a clear role inside the flow and run an independent service with their own resources attached (database, queue services…). Each service provides one purpose and for that reason you don’t need to use same programming language for all the application, you can use the better technology in any case. On the other hand, work using microservices allows to create single container artifacts that improves the development process and helps to deliver same tested artifact over all the environment just changing the environment config patterns.
Infrastructure as a code
Infrastructure as a code is the programming methodology used for provisioning and manage infrastructure with development code tools exactly the same as standard software. With the new API provided by the public cloud services as AWS , Google Cloud or Azure we can use multi platform systems like Terraform, Ansible, etc in order to generate and manage pieces of infrastructure that will be used to deploy our code within CD process. This way we will have our infrastructure versioned as code and we will be able to make roll-back in case of incident for infrastructure changes and even have a clear relationship between infrastucture and software code. This practice also accelerate the time for provisioning infrastructure and also help developers to create their own infra pieces where deploy new software services.
Monitoring and Alerting
One of the most important thing when we develop software (apps or infra) is follow the monitoring trending of the services and infrastructure in order to know how the development changes affects to the service. Using DevOps approach and infrastructure as a code, you can include those monitoring tools inside the service setup code. This way you will be able to deliver a new piece of service with the monitoring included. Another important point to add is Alerting. Alerting is related with threshold of some KPI metrics, as ownership of your service you should know which KPI you must follow in order to predict some issue inside the service. With some tools we can provide by code all the alerting setup to ensure that when something goes wrong with your infra or software service, you will be aware in a minute thanks to some alerting tools that will inform you by phone call, push notification or whatever.
Share the knowledge and improve collaboration
The knowledge transfer and also the collaboration inside a company it is one of the most important key points that we face when we implement DevOps approach. With the tools provided by DevOps, the whole development workflow is builded together with the infrastructure orchestration and can be modified with a shared contribution strategy by different kind of roles inside the organization. To achieve this goal there are some different communication channels like chat, wiki, conference calls, that contributes with an agile approach in order to share that knowledge between teams and make them all autonomous when they need to make some changes inside services. At the end all of this topics are very related with align the technical team.
In order to implement a DevOps model inside a company it is mandatory introduce some DevOps tools that will help us with all the points related with the CI/CD, communications, and orchestration process. There are a lot of different services and software that provides solutions but from Geko we are very confident with some like: Jenkins, GitHub, Drone.io, Spinnaker, Ansible, Docker… of course we must to adapt and find out tools for any particular case.