Pull to refresh
54
0
Владимир Кальченко@tommyangelo27

User

Send message

Развёртывание в Kubernetes из GitLab

Reading time31 min
Reach and readers50K

Развёртывание в Kubernetes из GitLab


Развёртывание в Kubernetes из GitLab


Это продолжение предыдущего туториала про командную разработку с использованием GitLab. Фокус предыдущей статьи был на организации непрерывной поставки в работе команды. В этой статье мы уделим основное внимание именно практическим действиям необходимым для развёртывания из GitLab в Kubernetes.


А именно мы возьмём максимально простое но достаточно содержательное приложение на React.js, докеризуем его, затем развернём в Kubernetes локально при помощи Docker Desktop. После этого развернём его уже на Google Cloud Platform (GCP), и завершим разработкой CI/CD конвейера в GitLab для публикации нашего приложения в Google Kubernetes Engine.


Желательны но необязательны базовые знания


  • Docker;
  • Kubernetes;
  • Git;
  • Node.js;
  • React;
  • Bash.

В дальнейшем мы сделаем следующее.


  • ? Познакомимся c нашим приложением, обсудим из чего оно состоит.
  • ? Докеризуем наше приложение.
  • ☸️ Развернём наше приложение в Kubernetes локально на Docker Desktop.
  • ☁️ Обсудим особенности GCP и как нужно изменить наше приложение, а затем ещё раз развернём наше приложение в Kubernetes но уже в GCP.
  • ? Завершим наш туториал созданием конвейера для развертывания приложения в GCP при помощи GitLab.

Разные этапы от докеризации до Kubernetes на Google Cloud Platform

Читать дальше →

Как один стартап от docker-compose до Kubernetes добирался

Reading time10 min
Reach and readers12K

В этой статье я хотел бы рассказать о том, как мы меняли подход к оркестрации на нашем стартап-проекте, зачем мы это делали и какие проблемы по дороге решали. Претендовать на уникальность эта статья вряд ли может, но все же думаю, что она может быть кому-то полезна, так как в процессе решения задачи материал собирался нами с приличным скрипом.  

Что мы имели и о чем вообще речь? А имели мы стартап-проект с примерно 2-летней историей разработки из advertisement  области. Проект изначально строился как микросервисный, и серверная его часть написана на Symfony + немного Laravel, Django и нативного NodeJs. Сервисы представляют из себя в основном API для мобильных клиентов (их в проекте 3) и нашего собственного SDK для IOS (встраивается в приложения наших кастомеров), а также веб-интерфейсы и разные дашборды этих самых кастомеров. Все сервисы были изначально докеризированы и работали под управлением docker-compose.

Правда, docker-compose использовался не везде, а только в локальном окружении у разработчиков, на тестовом сервере и внутри pipeline при сборке и тестировании сервисов. А вот в production окружении использовался Google Kubernetes Engine (GKE). Причем настройку GKE на старте проекта мы делали полностью через его web-интерфейс, что было довольно быстро и, как нам тогда казалось, удобно. Автоматизирован тут был только процесс сборки docker images для запуска сервисов в GKE.

Читать далее

Go: как изменяется размер стека горутины?

Reading time7 min
Reach and readers14K

Эта статья берет за основу Go 1.12.

Go радует нас легким и умным управлением горутинами. Легким, поскольку стек горутин изначально весит всего 2 КБ, а умным, потому что горутины могут автоматически увеличиваться/уменьшаться в соответствии с нашими потребностями.

Читать далее

Автоматизация тестирования микросервисов: плюсы и минусы тестов на Go

Reading time9 min
Reach and readers17K

Микросервисы можно тестировать по-разному. У каждого подхода есть свои плюсы и минусы, поэтому, чтобы выбрать свой путь и избежать на нём «граблей», лучше всего учиться на чужом опыте. А ещё лучше — на конкретных примерах.

Я занимаюсь тестированием в Ozon и хочу рассказать про нашу инфраструктуру, автоматизацию тестирования и инструменты, которые мы для этого применяем. Покажу, какие распространенные ошибки есть в  интеграционном тестировании в Golang. Поделюсь качествами хорошего теста, которые мы для себя определили, нашими подходами и методами подготовки данных для тестов.

Видео моего выступления на конференции Golang Live 2020 можно посмотреть здесь.

Читать далее

8 проблем в архитектуре Kubernetes

Reading time7 min
Reach and readers17K
Архитектура Kubernetes хорошо подходит для организаций типа FAANG, но может оказаться избыточной и чрезмерно сложной для прочих.

Kubernetes, оркестратор контейнеров с открытым исходным кодом, стал по факту безальтернативным решением для тех, кто развертывает контейнерные приложения в производственной среде. Тому есть много веских причин, и в том числе факт, что Kubernetes предлагает высокую степень надежности, автоматизации и масштабируемости. Тем не менее, мне иногда кажется, что архитектура Kubernetes перебрала хайпа: при том, что ей уже больше шести лет от роду, она всё ещё подвержена множеству недостатков. Некоторые из них присущи Kubernetes от рождения, другие результат развития образовавшейся вокруг платформы экосистемы.

Прежде чем нырнуть в Kubernetes с головой, примите во внимание следующие проблемы с этим опенсорсным оркестратором контейнеров.

1. Kubernetes разработан для компаний типа FAANG


Прежде всего, архитектура Kubernetes изначально была и остаётся предназачена для компаний, которым требуется управлять чрезвычайно масштабными программными окружениями.

Читать дальше →

Как привести в порядок Core Web Vitals за три дня, если у тебя Wordpress

Reading time7 min
Reach and readers4.6K


Если пару лет назад инструмент PageSpeed показывал оценку близкую к 100, то сегодня она может быть даже не 50, а 39, как в случае моего Pet-проекта. Большинство изменений, о которых пойдет речь ниже, связано с отказом от устаревающих решений.
Читать дальше →

Мои собеседования 2021 edition

Reading time13 min
Reach and readers45K

Внимание: повествование будет идти в стиле "здравствуй дорогой дневничок", без критики и срывов покровов. Я строго против публичной критики компаний в разрезе процесса интервью. Хотят устраивать 5 алгораундов - их дело, они будут платить тебе деньги и вправе решать как они собеседуют. С другой стороны, я считаю, что могу высказывать свое мнение без конкретных имен. Все описанные компании не российские. Извиняюсь за англицизмы.

Читать далее

Лезем в сорцы компилятора — как работает goscheduler (Часть I)

Reading time8 min
Reach and readers8.3K

Каждый раз, когда я открываю новую книжку о golang, обязательно лезу в главу о горутинах и в очередной раз читаю, как беспощадно прекрасен голанг. Подумать только, вместо того, чтобы создавать потоки для обработки параллельно выполняемых задач, мы будем пользоваться внутренними инструментами языка!

Всё это замечательно, и большинство книг и курсов по golang приводят множество примеров того, насколько быстр го и как он запросто может справиться с бесконечным количеством задач. К сожалению, все эти книги не рассказывают, что же происходит под капотом голанга. Что же, давайте откроем сорцы суслика и посмотрим, что там внутри.
Читать дальше →

Блеск и нищета модели предметной области

Reading time28 min
Reach and readers73K


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →

Микросервисы. Не всё то золото, что хайп

Reading time7 min
Reach and readers32K

Привет, меня зовут Владимир Кустиков, я — архитектор решений в e-Legion. И сегодня я хотел бы рассказать вам про микросервисы.

Наверное, я где-то неправ. А возможно, что у меня просто подгорело. Но в какой-то момент после запроса рассказать о том, в каких проектах я успешно применял микросервисы, мое терпение лопнуло. Ни в каких, понятно?! И это мой персональный повод для гордости. Если вам вдруг стало интересно, что еще может рассказать этот странный безумец с пылающим взором, то у меня есть хорошая новость — ниже о микросервисах будет адаптированный под хаброформат рассказ с картинками. А если нет — смело закрывайте эту статью.

Читать далее

Как я получил 4 оффера в FAANG в Европе или из Воронежа в Лондон

Reading time16 min
Reach and readers46K


Очередная история успеха после череды неудач. Расскажу, чего мне стоило получить офферы от Facebook*, Google, Amazon, JP Morgan в Европе, как я готовился, сколько собесов зафейлил перед тем, как удача повернулась ко мне правильной стороной.


TL;DR. Послал сотни резюме. Прорешал около 100 задач на Leetcode. Прочел книжку по архитектуре (не той, которая про дома, а той, которая system design). Прошел 9 интервью. Получил 4 оффера. Принял 1. Жил, пока что, не очень долго, но, вполне себе, счастливо в Лондоне.
Читать дальше →

Вся правда о Soft skills

Reading time10 min
Reach and readers32K

Хорошим программистом быть нетрудно — надо всего лишь постоянно учиться. Фреймворки обновляются ежегодно, а популярные языки программирования рождаются каждые пять лет. Вместе с ними нужно изучать инструментарий, лучшие практики, паттерны проектирования и бог знает, что ещё.

Двадцать лет назад все изучали Delphi. Сейчас проекты на Delphi — это глубокое legacy, и все изучают Go. Десять лет назад каждый фронтендер использовал jQuery, а современные фрондендеры могут даже не знать, что это такое.

Так что, правда, учиться надо постоянно.

Но в последние годы мы слышим, что наши технические навыки — так называемые hard skills — далеко не всё, что нам нужно. Помимо фреймворков и языков надо осваивать soft skills. Это нетехнические навыки, которые очень нужны в работе.

А нужны ли?

Читать далее

Функциональные  опции в Go: реализация шаблона опций в Golang

Reading time4 min
Reach and readers14K

В этом посте рассказывается о том, какие функциональные опции есть в Go и как мы можем использовать шаблон "опции" для их реализации. Функциональные опции имеют форму дополнительных аргументов функции, которые расширяют или изменяют ее поведение. Вот пример, в котором используются функциональные параметры для создания новой структуры House:

Читать далее

Эволюция Docker. Часть 1

Reading time14 min
Reach and readers21K

20 марта 2013 года на конференции PyCon 2013, Соломон Хайкс (CEO компании dotCloud) выступил с пятиминутной презентацией The future of Linux Containers. В ней широкой общественности впервые была представлена внутренняя разработка компании dotCloud под названием Docker, а спустя несколько дней ее исходный код был выложен в открытый доступ. Хотя технологии LXC и Aufs, на которых была основана первая версия Docker существовали и активно использовались уже порядка пяти лет, но именно появление Docker послужило началом стремительного роста и эволюции систем контейнеризации, что кардинально преобразило многие процессы разработки и деплоймента программного обеспечения.

Этой статьей я собираюсь начать небольшой цикл посвященный изучению развития исходного кода Docker на протяжении нескольких лет. В первой части мы посмотрим на то, что представлял собой код на момент создания git репозитория датированного январем 2013 года. Тогда исходный код Docker (за исключением тестов) состоял всего из шести файлов общим объемом ~600 строк кода, написанных на языке Go. Это больше походило на библиотеку/api, функционал которой состоял лишь в создании, удалении, запуске и остановке контейнеров. Мы разберем принцип работы и даже сможем запустить с ее помощью подготовленный контейнер. 

Во второй части мы перенесемся на несколько месяцев вперед - в март 2013, когда докер был представлен на конференции PyCon. На тот момент он уже обладал практически всеми знакомыми нам функциями. А в третьей части я постараюсь рассмотреть переход Docker с LXC на собственную разработку, произошедший годом позже.

Читать далее

Установка WSL с помощью одной команды стала доступна в Windows 10

Reading time2 min
Reach and readers56K

В последних сборках Windows Insider Preview вы можете установить все необходимое для запуска WSL, просто выполнив wsl.exe --install. Мы рады сообщить, что эта функция теперь официально перенесена в Windows 10 версии 2004 и выше, что значительно упростит установку WSL в этих сборках.

Читать далее

Unity + git = дружба: часть 1 джентльменский набор

Reading time8 min
Reach and readers55K
image
Система контроля версий git уже давно стала стандартом де-факто в мире разработки, но для большинства разработчиков на Unity не секрет, что существует ряд трудностей связанных с особенностями Unity, которые мешают эффективно использовать ее совместно с git.

Вот список типичных проблем:

  1. в репозиторий попадают ненужные файлы или наоборот не попадают нужные
  2. множество больших файлов раздувает размер репозитория
  3. проблема с мерджем yaml файлов Unity
  4. в репозиторий добавлен только сам файл или только meta
  5. в проекте присутствуют пустые папки
  6. сложность автоматической нумерации версий и билдов
  7. неудобство использования кода между несколькими проектами

О решение этих проблем, связанных с совместным использованием git и Unity, вы можете прочитать в моем цикле статей.

В этой статье будет описано решение первых трех проблем
Читать дальше →

Magento 2 UI Components. Часть 2: конфигурация

Reading time13 min
Reach and readers6.7K

Привет! Меня зовут Павел и я Magento 2 бэкенд-разработчик. В прошлой части саги о Magento 2 UI Components мы получили общие сведения о UI-компонентах, их разнообразии, строении и технологиях, лежащих в основе. Сегодня подробно коснемся их конфигурации: значения по умолчанию, XML-конфигурации, выражения в значениях конфигурации, замена шаблонов и JS-компонентов и пр. Погнали!

Читать далее

Wild Horizon или как осуществляется на практике мечта игродела

Reading time4 min
Reach and readers2.8K

Длинный монолог о том, как я рисовал Дикий Запад для Google Play. История глазами дизайнера.

Спрячь ствол, присаживайся и читай...

Плюсы и минусы 30 способов продвижения интернет-магазинов

Level of difficultyEasy
Reading time18 min
Reach and readers62K

Обзор составлен в первую очередь для владельцев интернет-магазинов. Цель обзора - предоставить объективную оценку (насколько это возможно) проверенных способов продвижения, без приукрашивания положительных сторон и сокрытия недостатков, чтобы предприниматель мог принимать более взвешенные решения в вопросах интернет-маркетинга, опираясь на данные обзора.

Читать далее

Мой топ полезных инструментов для Unity разработчика

Reading time3 min
Reach and readers15K

Всем привет! Меня зовут Григорий Дядиченко, и я всё ещё разрабатываю проекты на Unity под ключ. Сегодня хочется поговорить про полезный инструментарий для Unity разработчика. У меня давно на эту тему есть свой топ ассетов или софта, которые используются почти в каждом проекте, плюс несколько своих утилит. Не будем касаться слишком широких и банальных инструментов типа adb, а составим некоторый набор того, что можно использовать почти в каждом проекте.

Читать далее

Information

Rating
5,153-rd
Location
Wroclaw, Польша
Date of birth
Registered
Activity