Em ambientes com cada vez mais necessidade de mudanças e atualizações constantes, os times de tecnologia enfrentam desafios entre a agilidade das entregas para atender demandas de negócios e a estabilidade dos ambientes operacionais.
A falta de cooperação entre os grupos de tecnologia resultam em conflitos e ineficiências e precisamos criar uma ponte entre as necessidades de desenvolvimento ágil e os requisitos técnicos dos ambientes de produção.
Um ponto importante da mudança de filosofia é acabar com os silos e a cultura do “finger point” e investir de forma séria em automação.
Ao buscar oportunidades para automação do ciclo de desenvolvimento e operações podemos olhar para itens como por exemplo:
- Builds
- Tenting
- Monitoring
- Deployments
- System Configuration
A necessidade por simplificar processos entre os grupos e garantir a eficiências das entregas é pauta constante na agenda dos profissionais de tecnologia.
Normalmente todo fluxo de evolução de produtos e soluções dependem de tecnologia e sistemas complexos e com diversas partes dependentes, essa realidade introduz desafios de comunicação entre os times e deixa claro que para atender ao novo mundo precisamos de mudanças e novos modelos mentais.
Times de tecnologia devem ser cada vez mais responsáveis pelo sucesso dos seus grupos e ter o contexto claro do seu papel no sucesso dos negócios.
Todos os envolvidos existem por um motivo principal, viabilizar o negócio.
Velocidade no processo de entregas de novas funcionalidades e ambientes é uma necessidade e requisito básico para atingir os resultados, porém esse ponto não é mais importante que a segurança e a disponibilidade dos ambientes.
As mudanças não devem representar “incêndios” e dias intermináveis de crises e instabilidades.
Diminuir a distância entre os times que desenvolvem software e as equipes operacionais requer uma mudança de cultura. Uma abordagem muito mais colaborativa , com liberdade , times capacitados e grande responsabilidade.
Nessa cultura, a comunicação, transparência e as relações humanas são indispensáveis.
Para facilitar a vida dos times de desenvolvimento e operações existem diversas categorias de soluções que devem ser consideradas, entre elas podemos citar:
- Source Control
- Continuous Integration
- Deployment
- Cloud / Iaas / Paas
- Monitoring & Data visualization
- Database lifecycle management
- Repository Management
- Provisioning / Configuration Management
- Release Management
- Logging
- Build
- Testing
- Containerization
- Collaboration
- Security
Diversas ferramentas também apoiam nessa jornada, entre elas:
Source Control
- Git
- GitHub
Continuous Integration
- Jenkins
- Continuum
- Hudson
Deployment
- Jenkins
- Chef
- Capistrano
Cloud / Iaas / Paas
- Amazon Web Services
- Microsoft Azure
- OpenStack
- VMWare vCloud Air
- Google Cloud Platform
Monitoring & Data visualization
- Kibana
- Graphite
- Splunk
- Nagios
- Zabbix
- Grafana
- Elasticsearch
Database lifecycle management
- DBmaestro
- Datical
- Liquibase
Repository Management
- Artifactory
- Nexus
- Archiva
- NuGet
- npm
- Docker Hub
Provisioning / Configuration Management
- Chef
- Ansible
- Puppet
- Consul
Release Management
- Continuum
Logging
- Splunk
- Logstash
- Graylog
- Loggly
Build
- Continuum
- Maven
- ANT
- Hudson
- Broccoli
- Make
Testing
- Cucumber
- Selenium
- Gatling
- JUnit
- TestNG
- JMeter
Containerization
- Docker
- Kubernetes
- Mesos
- Linux Containers
- Swarm
- Marathon
- OpenVZ
Collaboration
- Jira
- Trello
- Slack
- HipChat
Security
- Snort
- Cyberark
- Tripwire
- Fortify
- Vault
- SecureAssist
Um ponto fundamental dessa revolução é entender que não é apenas um conjunto de ferramentas é uma mudança de cultura , onde novas formas de trabalho são buscadas, testadas , descartadas ou adotadas.
Artigo elaborado por Edward Monteiro, profissional com mais de 20 anos de experiência em tecnologia em ambientes de missão crítica.