Деплой Elixir-додатків

Deploy Exilir Applications
Дана стаття бере участь у конкурсі від Wunsh.ru — російськомовне співтовариство Elixir. Практики і просто співчуваючі — приєднуйтесь!
У статті розглянуто процес налаштування програми для релізу на віддалений сервер. Для такого не легкого справи в світі Elixir існує два хороших проекту, перший це
Distillery
, якої робить білд програми і другий це
Edeliver
, якій дозволяє здійснювати гарячу заміну коду. Нижче наведено базові інструкції по використанню цих двох бібліотек на прикладі найпростішого Elixir-додатки. А також стаття розповість яким чином можна покращити деплой завдяки використанню
docker
контейнерів.
Distillery
Distillery
призначений для автоматизації генерації релізів Elixir проектів! Є спадкоємцем Exrm від того ж автора. Дуже простий у використанні.
насамперед необхідно додати
distillery
в залежності проекту. А після виконати
mix deps.get
.
Читати далі →

Вийшов GitLab 8.15

В останньому релізі минулого року ми завершуємо наш Майстер-план і хочемо показати вам дещо цікаве з того, над чим ми працювали.

У GitLab 8.15 з'явилася фіча Auto Deploy – автоматизована налаштування розгортання і додатків для рев'ю (Review Apps). Для проекту на Ruby on Rails така настройка займе менше хвилини. Подивіться, як це працює, у відео на 1:42.
до того Ж, доступ до ваших середовищ (environments) став швидше і простіше: через термінал безпосередньо в GitLab (там же 5:18)
Ми хочемо дати кожному можливість використовувати всю міць контейнерів (containers), безперервної інтеграції і розгортання (continuous integration and deployment, скорочено CD/CI), додатків для рев'ю (review apps) і планувальників контейнерів (container schedulers). У GitLab 8.15 ми взяли на себе всю складну роботу по налаштуванню, і вся вона відбувається абсолютно прозоро. У демонстраційному відео ми налаштовуємо і розгортаємо Ruby-додаток з review apps, кількома середовищами і чатопсом (chatops, управління інфраструктурою через інтеграцію з чатом) на кластер Kubernetes приблизно за 12 хвилин. Без GitLab таке завдання зазвичай займає дні, якщо не тижні.
Для більшості з нас грудень — місяць свят і подарунків. GitLab теж отримав в подарунок багато нових фіч.

Читати далі →

Деплой веб-додатків за допомогою Ansistrano


ansistrano.deploy і ansistrano.rollback — ролі Ansible, призначені для управління процесом розгортання додатків, створених на скриптових мовах програмування (наприклад, PHP, Python і Ruby). По суті це реалізація Capistrano в Ansible.
Використання Ansistrano дає наступні переваги:
  • відкат за секунди (з роллю ansistrano.rollback);
  • налаштування процедури розгортання з використанням методів-обробників подій «до» і «після» критично важливих кроків;
  • оптимізація використання дискового простору за рахунок зберігання обмеженої кількості релізів;
  • вибір між SCP, RSYNC, GIT, SVN, HTTP Download чи S3 GET-стратегіями розгортання (додаток можливе використання unarchive).

Читати далі →

Як ми вже 4 роки виживаємо в умовах двох релізів в день



Здрастуй, Хабр! Сьогодні я хочу завершити цикл статей про організацію тестування (почався з вивчення помилок і досвіду), розповівши про те, як же все-таки Badoo випускає два якісних серверних релізу кожен день. Крім п'ятниці, коли ми релизимся тільки вранці. Не треба релизиться в п'ятницю ввечері.
Я прийшов до Badoo трохи більше чотирьох років тому. Весь цей час наші процеси та інструменти для тестування невпинно розвивалися і вдосконалювалися. Для чого? Число розробників і тестувальників збільшилася приблизно в два рази — значить, для кожного релізу готується більше завдань. Кількість активних зареєстрованих користувачів і теж подвоїлася — а значить, і ціна будь-якої нашої помилки стала вище. Для того щоб доставляти користувачам максимально якісний продукт, нам потрібні все більш і більш потужні засоби контролю якості, і ця гонка не закінчується ніколи. Мета цієї статті-не тільки продемонструвати працюючий приклад, але й показати, що якими б крутими не були ваші процеси контролю якості, напевно можна зробити їх ще краще. Технічні реалізації деяких інструментів ви зможете знайти за посиланнями на інші статті, про деяких з них нам ще належить написати.

В Badoo існує кілька різних QA-флоу, відмінність яких обґрунтовано різними засобами розробки та цільовими платформами (але ми використовуємо для них загальні системи: JIRA, TeamCity, Git і т. д.), і я вам розкажу про процес тестування і деплоя наших серверних завдань (а заодно і веб-сайту). Його можна умовно розділити на 5 великих етапів (хоча тут, звичайно, багато моїх колег вважають по-різному), кожен з яких включає в себе і ручну, і автоматизовану складову. Постараюся розповісти вам по черзі кожного з них, окремо виділяючи те, що змінювалося і розвивалося в останні роки.

Читати далі →

RailsClub 2016: подкасти з Іваном Немытченко та Іллею Зыкиным

Привіт!

RailsClub 2016 зовсім трохи! Поки ми готуємо 600 пакетів роздатки, хочемо нагадати вам, що пора голосувати за Героїв Рубі всі подробиці тут) і ближче познайомити ще з двома нашими спікерами — Іллею Зыкиным (Toptal) та Іваном Немытченко (Gitlab). Наші товариші з RubyNoName подкасту записали з кожним з них по захоплюючому випуску-інтерв'ю.

Послухати можна на сайті подкасту (тут Іван, тут Ілля). А нижче розшифровуємо по фрагменту з кожної розмови.

Читати далі →

GitLab CI: Розгортання і середовища розгортання

У даній статті мова піде про історії успіху уявного новинного порталу, щасливим власником якого є ви. На щастя, ви вже зберігайте код проекту на GitLab.com і знаєте, що для тестування можна використовувати GitLab CI.
Тепер вам цікаво, можна піти далі і використовувати CI ще й для розгортання проекту, і якщо так, то які можливості відкриваються.
Щоб не прив'язуватися до якоїсь конкретної технології, припустимо, що ваше додаток є простим набором HTML-файлів, ніякого виконання коду на сервері, ніякої компіляції JS assets. Деплоить будемо на Amazon S3.
У автора немає мети дати рецепти для конкретної технології в цій статті. Навпаки, приклади коду максимально примітивні, щоб надто на них не зациклюватися. Сенс в тому щоб ви подивилися на фічі і принципи роботи GitLab CI в дії, а потім застосували їх для вашої технології.


Читати далі →

Синьо-зелений деплой

Я і мої колеги завжди схиляємо своїх клієнтів повністю автоматизувати процес деплоя. Автоматизація допомагає скоротити кількість конфліктів і затримок, які виникають в процесі між "завершенням" роботи над програмою і введенням в експлуатацію. Дейв Фарлі (Dave Farley) і Джез Хамбл (Jez Humble) закінчують книгу "Безперервна доставка" (Continuous Delivery) на цю тему. Вона грунтується на безлічі ідей, які в цілому пов'язані з безперервною інтеграцією і підштовхують до можливості швидко пустити софт в роботу. Глава про синьо-зеленому деплое привернула мою увагу, тому що це один з маловикористовуваних методів, і я вирішив коротко висвітлити його.

Читати далі →

Автоматизація розгортання Docker-контейнерів на довільній інфраструктурі



Контейнеризація додатків сьогодні є не просто модним трендом. Об'єктивно такий підхід дозволяє багато в чому оптимізувати процес серверної розробки шляхом уніфікації підтримуваних інфраструктур (dev, test, staging, production). Що в підсумку призводить до значного скорочення витрат упродовж усього циклу життя серверного додатка.

Хоча велика частина з перерахованих достоїнств Docker є правдою, тих, хто на практиці зіткнеться з контейнерами, може спіткати легке розчарування. І так як Docker не є панацеєю, а лише входить в список «лікарських засобів» від рецепту автоматичного деплоя, розробникам доводиться освоювати додаткові технології, писати додатковий код і т. д.

Читати далі →

Перші 10 хвилин на сервері

Азбука безпеки Ubuntu
«Мої перші 5 хвилин на сервері» Брайана Кеннеді — відмінне введення, як швидко захистити сервер від більшості атак. У нас є кілька в цю інструкцію, щоб доповнити нею наше повне керівництво. Також хочеться детальніше пояснити деякі речі для більш юних інженерів.

Щоранку я перевіряю поштові повідомлення logwatch і отримую грунтовне задоволення, спостерігаючи кілька сотень (іноді тисяч) безуспішних спроб отримати доступ. (Багато досить прозаїчні — спроби авторизуватися
root
з паролем
1234
знову і знову). Наведена тут загальна методика підходить для серверів Debian/Ubuntu, які особисто ми вважаємо за краще всім іншим. Вони зазвичай служать тільки хостами для контейнерів Docker, але принципи ті самі.

На великих масштабах краще використовувати повністю автоматичні установки з інструментами на зразок Ansible або Shipyard, але іноді ви просто піднімаєте єдиний сервер або підбираєте завдання для Ansible — для таких ситуацій призначена інструкція.

Примітка: Ця довідка створена як базова абетка. Її слід розширити та доповнити у відповідності з вашими потребами.

Читати далі →

Самоконфигурирующиеся програми

Всім привіт.
Впровадження методики безперервної інтеграції впевнено крокує по нашій багатостраждальній батьківщині і все більше людей переймаються її ідеями і концепціями, що дуже добре. У даній статті я б хотів розповісти про прийом, який використовую на одній із стадій безперервної інтеграції – конфігурування програм.


Фотку взяв з Yaplakal


Читати далі →