упрощения создания, развертывания и запуска приложений с использованием портативных самодостаточных контейнеров (Linux или Windows) • Нужен для разработчиков и системных администраторов Ранее: Это работает на моей машине, почему не работает на продуктиве? Сейчас: Если это работает в Docker, то это работает в продуктиве процесс = контейнер у контейнера единственная точка входа
Bins/Libs Guest OS Guest OS Guest OS Host Operating System Hypervisor Infrastructure Docker Containers Operating System Container Engine App 1 App 2 App 2 Bins/Libs Bins/Libs Bins/Libs Infrastructure Сравнение Docker-контейнеров и виртуальных машин
App1 • Традиционное приложение, состоящее со слоев и библиотек • Масштабируемость через клонирование приложения на сервера/виртуальные машины Разворачивание полного прилиожения • В микросервисном приложении функциональность разделена на отдельные небольшие сервисы • Масштабируемость через разворачивание каждого сервиса независимо дублированием экземпляров на серверах/VM/Docker App1 App2 Независимое разворачивание микросервисов Мелкозернистая структура Крупнозернистая структура
No-SQL BD БД обычно “бутылочное горлышко” • Единственная монолитная БД • Слои технологий SQL У каждого микросервиса своя model/date Stateful services Stateless services Stateless service с отдельным хранилищем • Взаимосвязанные микросервисы • Удаленное хранилище для “холодных данных”
3.“Эластичное” облачное приложение: 1.Retries 2.Автоматический выключатель 4.Event Bus (Async. Pub/sub коммуникация) 5.Масштабирование при помощи Оркестратора
«Нужно использовать Докер – я уже проверил на танчиках, работает классно!» «Верю на слово. Будем делать… Саша, надо сделать нам докер контейнеры.» Саша Рябчун OKAY
Docker Приняли решение попробовать Развернули тестовую среду FZNetCoreDMZ Развернули Spark Запустили пополнения в Ringoo Развернули BankID TechDoc Сентябрь 2017 Ноябрь 2017 Февраль 2018 Июль 2018 Октябрь 2018 Сегодня
аутентификация, авторизация, шифрование и проверка подписи • Ограничения: DMZ открыт только на вход • Сервисы: Spark, Energo, Corezoid, VodafonePay, VostokOAuth, ChatBot Применение. ExternalAPI. Описание
3. Запросы с DMZ внутрь сети 4. Внутренние хосты Группы Фоззи имеют доступ в банк напрямую 5. Petya (malware) как точка невозврата Применение. ExternalAPI. Состояние до
3. Попробовали Docker 4. Попробовали .NET Core 5. Настроили CI 6. Настроили управление 7. С 2018-02-19 проблем не обнаружено 8. Оно работает!!!!! “Очень понравился ваш API, он изменил мое представление о банковских продуктах. Понятный функционал и отличная поддержка” Андреев Дмитрий. IT-директор Ringoo
или «Войти с Google» и работает на основе протокола OAuth 2.0. BankID это сервис от НБУ созданный для проведения удаленной идентификации пользователя с целью предоставления административных, банковских и коммерческих услуг онлайн.
9 в процессе подключения. Планируется: • Дистанционное открытие счетов в банках. • Коммерческие услуги (страхование, услуги от мобильных операторов, работа с ценными бумагами, получение ЕЦП и другие). BankID
(ПАУ) Трансляция запроса от ПАП Цетральный узел BankID НБУ Подписанные и зашифрованые данные клиента Сайт банка Трансляция данных от банка Цетральный узел BankID НБУ Портал админ услуг (ПАУ)
На разных этапах были задействованы 3 разработчика и 2 системных администратора. Сделано: • Создан и развернут сайт для авторизации клиента (средствами Docker). • Создан и развернут VostokOAuth backend сервис (получение данных о клиенте из различных баз данных, формирование пакета с данными, наложение ЕЦП, шифрование). • Сайт и VostokOAuth обмениваются информацией через DMZ Трудности: • Работа с сессиями сайта развернутого в Docker при наличии нескольких нод BankID
на ASP.NET Core MVC 2. Работа с сертификатами под Window и Linux: RSACryptoProvider, RSACng, RSAOpenSsl 3. Подключение Volume 4. Передача ENV в приложение 5. Увидели разницу между развертыванием Windows Service и Docker Проблема: Сессии (20 ноября решено)
Новые разработки с использованием: .NET Core 2.1, Docker, Swarm 2. Инвентаризация существующего ПО с графиком перехода на Docker 3. Покупка оборудования для увеличение мощностей 4. Решения проблем с безопасностью: OAuth2, Сертификаты 5. Swarm -> Kubernetes 6. Вырастить своего DevOps’а ☺
Использование RabbitMQ 3. Разделение монолита на микросервисы 4. Масштабируемость 5. Нет бизнес-логики в БД 6. Entity Framework Core 7. Тестирование компонентов отдельно 8. Unit-тесты
в секту свидетелей Docker, в Банке и Фоззи инфраструктура готова 3. При увеличении количества контейнеров возрастает необходимость в оркестровке 4. .NET Core мощный, активно развивающийся инструмент
популярный мод для игры World of Tanks. • Максимальное количество активных пользователей: более 3 700 000 человек. • XVM — полностью бесплатный мод с открытым исходным кодом. Принять участие в разработке может каждый! • Маркеры над танками • Кастомизируемые панели игроков, таблица статистики и экран загрузки • Мод миникарты • Замена «лампочки» «шестого чувства» • Лог нанесённого урона • Модифицированная полоса захвата базы • Иконки кланов и игроков
1 запрос на игрока до 30 запросов за раз • Кэширование на клиенте • 64K inodes limit => /al/ex/alex1234 • 100-200 RPS VPS Dedicated Server Intel Core i7-920, 8 GB DDR3, 2 x 750 GB SATA II HDD MySQL • Hetzner EQ4 • MySQL • Updater • 200-300 RPS -> CPU