УДК 004.421
DEVOPS CONCEPTS
Roman Makosiy
Base 2 Services Pty Ltd, Melbourne, Australia
The article is devoted to DevOps concept as one of the new trends in the IT industry. The author points out the goal and the key tools of DevOps concept and raises a discussion about economic benefits of the new IT concept.
Key words: concept, planning, .service, tools, advantages.
В данной статье автором рассматривается концепция DevOps как одного из новых направлений в IT-индустрии. Указываются цель и основные инструменты концепции DevOps. Обсуждаются преимущества бизнеса при использовании новой концепции.
Ключевые слова: концепция, планирование, сервис, инструменты, преимущества.
DevOps is one of the new trends in IT sphere. This approach has clear goals and philosophy. This article proposes to consider the basic principles, purpose and tools of this technology.
What Is DevOps?
DevOps is a term for a group of concepts that, while not all new, have catalyzed into a movement and are rapidly spreading throughout the technical community.
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.
Under a DevOps model, development and operations teams are no longer "siloed". Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function. Quality assurance and security teams may also become more tightly integrated with development and operations and throughout the application lifecycle.
These teams use practices to automate processes that historically have been manual and slow. They use a technology stack and tooling which help them operate and evolve applications quickly and reliably.
These tools also help engineers independently accomplish tasks (for example, deploying code or provisioning infrastructure) that normally would have required help from other teams, and this further increases a team's velocity.
Where Did DevOps Come From?
DevOps is the offspring of agile software development - born from the need to keep up with the increased software velocity and throughput agile methods have achieved. Advancements in agile culture and methods over the last decade exposed the need for a more holistic approach to the end-to-end software delivery lifecycle.
The DevOps ideals extend agile development practices by further streamlining the movement of software change through the build, validate, and deploy and delivery stages, while empowering cross-functional teams with full ownership of software applications - from design through production support.
DevOps is an IT mindset that encourages communication, collaboration, integration and automation among software developers and IT operations in order to improve the speed and quality of delivering software.
DevOps teams focus on standardizing development environments and automating delivery processes to improve delivery predictability, efficiency, security and maintainability. The DevOps ideals provide developers more control of the production environment and a better understanding of the production infrastructure. DevOps encourages empowering teams with the autonomy to build, validate, deliver and support their own applications. With DevOps, nothing gets "thrown over the wall".
What Are the Challenges DevOps Solves?
Prior to DevOps application development, teams were in charge of gathering business requirements for a software program and writing code. Then a separate QA team tests the program in an isolated development environment, if requirements were met, and releases the code for operations to deploy.
The deployment teams are further fragmented into siloed groups like networking and database. Each time a software program is "thrown over the wall" to an independent team it adds bottlenecks.
The problem with this paradigm is that when the teams work separately:
- Dev is often unaware of QA and Ops roadblocks that prevent the program from working as anticipated.
- QA and Ops are typically working across many features and have little context of the business purpose and value of
the software.
- Each group has opposing goals that can lead to inefficiency and finger pointing when something goes wrong.
DevOps addresses these challenges by establishing collaborative cross-functional teams that share responsibility for
maintaining the system that runs the software and preparing the software to run on that system with increased quality feedback and automation issues.
What Are the Phases of DevOps Maturity?
There are several phases to DevOps maturity. Here are a few of the key phases.
- Waterfall Development
Before continuous integration, development teams would write a bunch of code for three to four months.
Then those teams would merge their code in order to release it. The different versions of code would be so different and have so many changes that the actual integration step could take months. This process was very unproductive.
- Continuous Integration
Continuous integration is the practice of quickly integrating newly developed code with the main body of code that is to be released. Continuous integration saves a lot of time when the team is ready to release the code.
DevOps didn't come up with this term. Continuous integration is an agile engineering practice originating from the Extreme Programming methodology. The terms been around for a while, but DevOps has adopted this term because automation is required to successfully execute continuous integration.
Continuous integration is often the first step down the path toward DevOps maturity.
The continuous integration process from a DevOps perspective involves checking your code in, compiling it into usable (often binary executable) code and running some basic validation testing.
- Continuous Delivery
Continuous delivery is an extension of continuous integration [DevOps stage 2]. It sits on top of continuous integration. When executing continuous delivery, you add additional automation and testing so that you don't just merge the code with the main code line frequently, but you get the code nearly ready to deploy with almost no human intervention. It's the practice of having the code base continuously in a ready-to-deploy state.
- Continuous Deployment
Continuous deployment, not to be confused with continuous delivery [DevOps nirvana], is the most advanced evolution of continuous delivery. It's the practice of deploying all the way into production without any human intervention.
Teams that utilize continuous delivery don't deploy untested code; instead, newly created code runs through automated testing before it gets pushed out to production. The code release typically only goes to a small percentage of users and there's an automated feedback loop that monitors quality and usage before the code is propagated further.
There are a very small number of companies that are truly practicing continuous deployment. Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU and Google are popular examples of companies doing continuous deployment.
While DevOps nirvana is often not the end goal for most enterprises, they often focus on moving towards continuous delivery.
What Are the Values of DevOps?
DevOps focuses heavily on establishing a collaborative culture and improving efficiency through automation with DevOps tools. While some organizations and people tend to value one more than the other, the reality is it takes a combination of both culture and tools to be successful. Here's what you need to know about these two DevOps values.
DevOps Culture
DevOps culture is characterized by increased collaboration, decreasing silos, shared responsibility, autonomous teams, improving quality, valuing feedback and increasing automation. Many of the DevOps values are agile values as DevOps is an extension of agile.
Agile methods are a more holistic way of delivering software. Agile development teams measure progress in terms of working software. Product owners, developers, testers and UX people work closely together with the same goals.
DevOps is just adding the operations' mindset and maybe a team member with some of those responsibilities into the agile team. Whereas before DevOps progress is measured in terms of working software, with DevOps progress is measured in terms of working software in the customer's hands.
To achieve this, Dev and Ops must break down the silos and collaborate with one another, share responsibility for maintaining the system that runs the software, and prepare the software to run on the system with increased quality feedback and delivery automation.
DevOps Tools
DevOps tools consist of configuration management, test and build systems, application deployment, version control and monitoring tools. Continuous integration, continuous delivery and continuous deployment require different tools. Earlier we briefly discussed some of the tools used in DevOps; here are some of the key tools and practices you need to know.
- Source Code Repository
A source code repository is a place where developers check in and change code. The source code repository manages the various versions of code that are checked in, so developers don't write over each other's work.
Source control has probably been around for forty years, but it's a major component of continuous integration. Popular source code repository tools are Git, Subversion, Cloudforce, Bitbucket and TFS.
- Build Server
The build server is an automation tool that compiles the code in the source code repository into executable code base. Popular tools are Jenkins, SonarQube and Artifactory.
- Configuration Management
For most people, computers don't stay the same. Software is added, removed, and updated. Configurations are changed. Configuration management tools are what make implementing and enforcing these changes possible. Popular configuration management tools are Puppet and Chef.
- Infrastructure as Code
Amazon Web Services and Microsoft Azure are examples of cloud infrastructures. Cloud vendors sell infrastructure or platform as a service (PaaS). The cloud's API-driven model enables developers and system administrators to interact with infrastructure programmatically, and at scale, instead of needing to manually set up and configure resources. Thus, engineers can interface with infrastructure using code-based tools and treat infrastructure in a manner similar to how they treat application code. Because they are defined by code, infrastructure and servers can quickly be deployed using standardized patterns, updated with the latest patches and versions, or duplicated in repeatable ways.
- Test Automation
Test automation has been around for a long time. DevOps testing focuses on automated testing within your build pipeline to ensure that by the time that you have a deployable build, you are confident it is ready to be deployed. You can't get to the point of continuous delivery where you're fairly confident without any human intervention that your code is deployable without an extensive automated testing strategy. Popular tools are Selenium and Water.
- Pipeline Orchestration
A pipeline is like a manufacturing assembly line that happens from the time a developer says, "I think I'm done," all the way to the time that the code gets deployed in the production or a late-stage pre-production environment. The Finale
According to the 2015 State of DevOps Report, "high-performing IT organizations deploy 30x more frequently with 200x shorter lead times, they have 60x fewer failures and recover 168x faster."
It can be stated that there are three business advantages that organizations receive from the transition to DevOps: fast entry to the market (reducing cycle time and faster deployment), improving quality (increasing accessibility), and increasing organizational efficiency (more time is spent on related activities with an increase in the value of the product). In addition, DevOps changes the culture, and also changes the processes and performance indicators of developers and administrators.
The Bibliography
1. URL:https://aws.amazon.com/devops/what-is-devops/ (date of page view 07.07.2017). © Makosiy R., 2017
УДК 004.822:514
ГОЛОСОВАЯ ИДЕНТИФИКАЦИЯ В СИСТЕМАХ КОНТРОЛЯ ДОСТУПА
П. А. Меньшаков, И. А. Мурашко
Гомельский государственный технический университет им. П. О. Сухого
Авторами статьи обосновывается возможность использования голосовой идентификации пользователя на основе нейронных сетей как средства контроля доступа. Предложена методика быстрого получения голосового отпечатка диктора без потери данных, характеризующих особенности голоса. Описываются возможности модульного приложения, осуществляющего голосовую идентификацию пользователя на базе алгоритма вычисления нейронов в слое Кохонена.
Ключевые слова: голосовая идентификация, биометрия, контроль доступа.
Введение. Большинство средств контроля доступа имеет высокую цену. Причём значительная часть расходов приходится на выделение персонального средства идентификации каждому пользователю. Решением данной проблемы может стать голосовая идентификация.
Биометрия предполагает систему распознавания людей по одной или более физических или поведенческих черт. В области информационных технологий биометрические данные используются в качестве формы управления идентификаторами доступа и контроля доступа. Также биометрический анализ используется для выявления людей, которые находятся под наблюдением [1] .
Задача голосовой идентификации, или распознавания диктора по голосу, сводится к тому, чтобы выделить, классифицировать и соответствующим образом отреагировать на человеческую речь из входного звукового потока [2]. При этом обычно выделяют три подзадачи: получение голосового отпечатка, идентификация и верификация [3].
Получение голосового отпечатка - процесс получения образца, представляющего вектор характеристик голоса диктора [3]. Идентификация - процесс определения личности по образцу голоса путём сравнения данного образца с шаблонами, сохранёнными в базе [4]. Верификация - процесс, при котором с помощью сравнения представленного образца с хранимым в базе шаблоном проверяется запрошенная идентичность [4]. Результатом является подтверждение личности или отрицательный ответ системы.
Прохождение данных процедур занимает довольно длительное время, в связи с чем затрудняется прохождение идентификации несколькими лицами. Ниже предложена методика быстрого получения голосового отпечатка диктора, причём без потери данных, характеризующих голос. Предложена также нейросетевая идентификация и верификация полученного голосового отпечатка при помощи использования самоорганизующейся карты Кохонена (SOM - Self-Organized Map) [5], скорость обработки которой была увеличена за счёт выделения нейронов с максимальной активностью, при этом потери точности голосовых характеристик минимальны.
Технические средства. Первоначальным этапом голосовой идентификации является получение голоса диктора. Для этого необходим микрофон, фильтр и аналого-цифровой преобразователь (далее по тексту - АЦП) для дальнейшей работы с цифровой записью голоса. В общем виде схема устройства для получения голоса диктора представлена на рисунке 1.
С выхода микрофона сигнал подаётся на вход блока фильтрации. Следующим этапом является прохождение АЦП. Когда АЦП применяется для амплитудного анализа, число, получаемое на выходе АЦП, используется для адресации памяти и называется номером канала, а V - шириной канала. Номер канала несёт информацию об амплитудном значении сигнала.
Далее оцифрованный сигнал попадает в блок цифровой обработки, где сигнал фильтруется и преобразуется в вектор, с которым в дальнейшем будет работать микропроцессор и нейросетевой обработчик. Также получен-