DevOps Intern Position

Какво е Devops?

В процеса на софтуерната разработка едно от най-важните звена е доставянето и осигуряването на безпроблемна работа на крайния продукт.
DevOps инженерите се грижат това да се случва по най-безпроблемния, лесен и бърз начин. Основна роля за постигането на тези цели имат:

  • тясно сътрудничество с другите членове на екипа
  • проектиране и автоматизация на създаването и управлението на инфраструктурата, свързана с разработката на продукта (тестови среди, процеси по тестване и доставяне (CI/CD pipelines))
  • проектиране и автоматизация на създаването и управлението на продукционните системи (сървърите, на които работи софтуерът, използван от потребителите)
  • осигуряване на системи за наблюдение и автоматизация на реакцията при проблеми

Какви технологии използваме в процеса на работа?

В кутията с инструментите си DevOps инженерите имат богат набор от модерни инструменти.

За осигуряването на необходимите машини се използват решения за виртуализация и cloud (Amazon Web Services, Microsoft Azure, Google Cloud и т.н.), а за определени цели няма нужда и от сървъри (т.нар. serverless инфраструктура като Amazon Lambda).

Създаването, инсталирането и конфигурирането им се случват с infrastructure as code инструменти, които позволяват описанието на системите да бъде пазено в система за контрол на версиите като git. Така девопс инженерите всъщност пишат инфраструктурен “код”, който след това бива превърнат в реални системи. Такива са например Terraform, Ansible, Puppet.

Освен това пускането на готовите приложния не се прави чрез ръчно инсталиране на софтуерни пакети, а чрез инструменти за контейнеризация и оркестрация като Docker, Docker Compose и Kubernetes.

За постигане на високото ниво на автоматизация често има писане на скриптове (като Bash, PowerShell) или дори пълноценни софтуерни решения, използващи стандартни езици за програмиране, когато се налага (например Javascript, Python, Go).

За процесите по интегриране и доставяне (CI/CD Pipelines) се използват инструменти, които работят заедно със системите за контрол на версиите (Git), за да може всички стъпки по пътя на софтуерния продукт да бъдат изпълнявани коректно, автоматично и да алармират при проблеми. Такива са например Jenkins и Gitlab CI.

Успешно деплойнатият продукт следва да бъде наблюдаван, за да се следи неговата производителност и работоспособност. Това се случва с инструменти за следене на използвани ресурси, време за изпълнение на важни заявки, брой и вид грешки и много други. Подобни инструменти са например NewRelic, DataDog и AWS Cloudwatch.

Как изглежда DevOps стажът в Астеа?

Стажът започва с теоретична и практическа подготовка по важни теми, технологии и инструменти, които са ключови за DevOps работата. Това е организирано в лекции, водени от ментори от компанията, както и практически упражнения и задачи.

Във втората половина от стажа DevOps стажантите участват в един по-общ стажантски екип, работещ върху собствен софтуерен продукт. Ролята им е да осигурят необходимото откъм инфраструктурна гледна точка за безпроблемното разработване, тестване и доставяне на готовия продукт.
Екипът се състои от основните роли, необходими за софтуерен продукт – освен DevOps има разработчици, тестери, анализатор, дизайнер и клиент. Работи се по процеси, които реално се използват в екипите на компанията. Целта е да се пресъздаде животът на един реален продукт/проект, заедно с всички необходими дейности, свързани с разработването му.
Крайният продукт ще бъде представен от екипа на вътрешна презентация пред останалите колеги от Астеа.

По-конкретно, в отговорностите на DevOps екипа е създаването, автоматизирането и управлението на:

  • локалните среди за разработка – това са колекция от инструменти, които имат за цел да направят лесно пускането и работата върху софтуерния продукт от разработчиците на техните компютри
  • тестови среди – това са различни версии на продукта, които да бъдат проверени от тестерите
  • процесите по автоматизирано тестване и доставяне (CI/CD pipelines) – интеграция на системата за version control, за да може промени по продукта да бъдат автоматично пуснати на тестови среди, да се изпълнят автоматизирани тестове (разработени от тестерите на екипа) и при успешно преминаване на тези проверки – доставени до продукционната среда (използвана от потребителите)

Технологиите, които ще разгледаме са:

  • Linux и виртуализация
  • Docker и docker-compose
  • git и Gitlab

В зависимост от спецификата на продукта е възможно да използваме и допълнителни технологии (например AWS cloud, Terraform, Kubernetes).

Какви са изискванията към кандидат стажантите?

  • Желание за учене на нови неща и за развитие като DevOps инженер
  • Базов опит с Linux и неговия терминал, основни команди
  • Основни познания в сферата на мрежите (например: адресиране на мрежи, подмрежи, маски, конфигуриране на IP адреси или DNS)

Бонус:

  • Опит със скриптови езици или езици за програмиране (например: Bash, Python, Javascript или други)
  • Основни знания, свързани с cloud, виртуализация или контейнери (Docker)

Contact Us

  • facebook
  • twitter
  • linkedin
  • github
© 2021 Astea Solutions AD