- Краткая вводная про Docker (namespaces, cgroups и как Docker все это использует)
- Как заходить в Docker из вашего софта?
- Примеры: pam_docker и php_fpm_docker
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
Рассказываем о том, как мы жили без Docker'а и зачем его решили использовать. А также описываем процесс внедрения в CI и, в частности, в тесты, плюс с какими проблемами столкнулись и как их побороли.
— Как сделать сеть между Docker контейнерами и дать доступ к ней во вне без спецрешений;
— Какие есть решения в Docker для сетевого взаимодействия;
— сравнение weave, docker netwirking, macvlan.
- Краткая вводная про Docker (namespaces, cgroups и как Docker все это использует)
- Как заходить в Docker из вашего софта?
- Примеры: pam_docker и php_fpm_docker
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
Рассказываем о том, как мы жили без Docker'а и зачем его решили использовать. А также описываем процесс внедрения в CI и, в частности, в тесты, плюс с какими проблемами столкнулись и как их побороли.
— Как сделать сеть между Docker контейнерами и дать доступ к ней во вне без спецрешений;
— Какие есть решения в Docker для сетевого взаимодействия;
— сравнение weave, docker netwirking, macvlan.
В докладе рассматривается текущее состояние механизмов поиска и установки необходимых библиотек и утилит. Мы пробежим по общему определению менеджера пакетов и рассмотрим несколько распространенных примеров. Взглянем на типичные сценарии использования и на то, какие возможности были использованы в качестве критериев сравнения, а также составим представление о существующих решениях в мире С++ их конструктивных особенностях и примерах решаемых задач.
Linux Control Groups (Контрольные группы) -- механизм, позволяющий управлять группами процессов в Linux и их ресурсами. Это мощный инструмент о котором знают далеко не все. Презентация дает краткий обзор.
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
Доклад - https://www.youtube.com/watch?v=lJsqRwULRVA
Какие проблемы решаем?
быстрый вход нового разработчика в проект
стандартизация настроек разработчиков
переключение между проектами - разные версии ПО и библиотек (mysql 5.6/5.7, node 0.12/7.2)
приучаем разработчиков к сетевому взаимодействию компонентов
Microservice - масштабирование/разделения разработки
Делим ресурсы staging среды между проектами
— Краткий экскурс в предыдущие доклады;
- Описание нашей системы сбора статистики с контейнеров и рассказ почему мы решили отказаться от cadvisord;
- Автоматическая система сборки контейнеров и интеграция с teamcity;
— Наброс о системе генерации и хранения конфигураций.
В докладе рассматривается текущее состояние механизмов поиска и установки необходимых библиотек и утилит. Мы пробежим по общему определению менеджера пакетов и рассмотрим несколько распространенных примеров. Взглянем на типичные сценарии использования и на то, какие возможности были использованы в качестве критериев сравнения, а также составим представление о существующих решениях в мире С++ их конструктивных особенностях и примерах решаемых задач.
Linux Control Groups (Контрольные группы) -- механизм, позволяющий управлять группами процессов в Linux и их ресурсами. Это мощный инструмент о котором знают далеко не все. Презентация дает краткий обзор.
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
Доклад - https://www.youtube.com/watch?v=lJsqRwULRVA
Какие проблемы решаем?
быстрый вход нового разработчика в проект
стандартизация настроек разработчиков
переключение между проектами - разные версии ПО и библиотек (mysql 5.6/5.7, node 0.12/7.2)
приучаем разработчиков к сетевому взаимодействию компонентов
Microservice - масштабирование/разделения разработки
Делим ресурсы staging среды между проектами
— Краткий экскурс в предыдущие доклады;
- Описание нашей системы сбора статистики с контейнеров и рассказ почему мы решили отказаться от cadvisord;
- Автоматическая система сборки контейнеров и интеграция с teamcity;
— Наброс о системе генерации и хранения конфигураций.
Владимир Гриненко —Инструменты фронтенд-разработчикаYandex
Мы поговорим о том, как создать эффективный и надёжный код, переложив всю лишнюю работу на роботов. Решим проблему с разным окружением у разработчиков (vagrant), научимся писать стили удобно (roole, autoprefixer), оптимизируем получившийся CSS (clean-css, CSScomb) и графику (Imagemin, SVGO), проверим js-код (jshint, jshint-groups, jscs), убедимся, что некрасивый код не попадёт в репозиторий (git-hooks), и обсудим, как можно быстро и легко создавать новые инструменты.
Автоматизируем всё, что можно, и подумаем, что и почему — нельзя!
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
Курс "Промышленное программирование на Java". Набор лекций 1. "Сборка и компоновка приложения".
Сборка проекта. Apache Maven. Компоновка и верхнеуровневый дизайн приложения. Depencency Injection. Spring Framework. Spring Boot. Обзор популярных утилитарных библиотек. Логгинг, slf4j, log4j.
МФТИ, 2014 год. Лектор - Лаврентьев Федор Сергеевич
Леонид Васильев "Python в инфраструктуре поиска"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Леонид Васильев "Python в инфраструктуре поиска"
О докладе:
Описание архитектуры и реализации внутренних инструментов для управления поисковым кластером.
Что такое инфраструктура поиска? Какие задачи приходится решать? Какие инструменты для управления кластером используются в поиске? Как они устроены изнутри? Что можно посоветовать проектам с большой инфраструктурой? Какие существуют open-source аналоги?
Леонид Васильев "Python в инфраструктуре поиска"Yandex
Леонид Васильев "Python в инфраструктуре поиска"
Я.Субботник в Санкт-Петербурге
О докладе:
Что такое инфраструктура поиска. Какие задачи приходится решать. Какие инструменты для управления кластером используются в поиске. Как они устроены изнутри. Что можно посоветовать проектам с большой инфраструктурой. Какие существуют open-source аналоги.
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Yandex
Платформа Node.js становится все более популярной. Для нее уже создано много библиотек и инструментов. Рассказ о том, какие из них и для чего мы используем.
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
Доклад про ближайшее будущее в эксплуатации распределённых систем.
Компания Mesosphere весной 2016 сделала свою платформу DC/OS (data center operation system) бесплатной и открытой. Платформа DC/OS унифицирует и упрощает процесс поставки и эксплуатации систем.
Основными особенностями платформы являются:
– переход от host centric к resource centric подходу для всех компонентов вашего проекта за счёт представления серверов как ресурсов для приложения (с помощью mesos и marathon);
– наличие инструментов автоматического восстановления вашего проекта после аварии;
– marketplace для приложений. Например, можно развернуть MySQL, Elasticsearch, Kafka или mongodb кластер, используя готовые скрипты развертывания. Процесс развертывания кастомизируется, в случае необходимости можно описать кастомные приложения и поправить скрипты существующих;
– наличие API для интеграции в ваши системы CI/CD, мониторинга, и т.д.
Основные компоненты DC/OS:
– Apache Mesos — абстракция над датацентром, которая представляет сервера (физические и виртуальные) как ресурсы и распределяет эти ресурсы на основании данных о потребностях приложения;
– Marathon — система распределённого запуска приложений (в т.ч. docker контейнеров), основной фишкой является возможность декларативного описания вашей системы. Вы можете описать, сколько ресурсов нужно вашему приложению, зависимости между приложениями, и в каком порядке производить деплой.
Доклад разбит на три части:
– Интро про DC/OS, сравнение с kubernetes и coreos стеком;
– Рассказ про компоненты mesos и marathon, как их можно использовать с докером (и без!) уже сейчас;
– Опыт Express 42. Мы построили CI/CD платформу для приложений, с использованием Mesos, Marathon, Docker и Jenkins 2.0.
Тестируй это / Виктор Русакович (GP Solutions)Ontico
РИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 5 июня, 18:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2625.html
Как писать тесты?
Как запускать тесты?
Кто все сломал?
Все три вопроса рассмотрены в докладе. Также будет демо интеграции проекта, покрытого тестами, и cloud-based-сервиса по запуску этих тестов (github+travis).
Кроме того, расскажу об опыте по сокращению времени прогона тестов; о том, как добавить тесты в случае, если у вас уже есть большое приложение, но все еще без тестов.
Фреймворк Akka и его использование в ЯндексеVadim Tsesko
Доклад с JPoint 2014 (http://javapoint.ru).
Краткое содержание:
* Actor Model на примере Akka
* Происхождение
* Концепции и API
* Примеры кода
* Примеры систем в Яндекс
* Конвейерная обработка данных
* Реактивные иерархические системы
* Опыт разработки и эксплуатации
* Подводные камни
* Проблемы и некоторые решения
* Дополнительные тулы
This is a war-story about deploying and managing Jenkins instances in the cloud in our company. For this purpose, we use Mesos and Docker plugins. In the talk I focus on our requirements to Jenkins in the Cloud, prerequisites and the preparation process. The presentation also covers the current state of the deployment and the lessons learnt.
We are hiring! Msk and Spb: https://goo.gl/HjfOz5
Similar to Software engineering seminars: gradle (20)
Исследование характеристик динамического предсказания ветвлений в конвейере с...Semen Martynov
Конвейерный принцип обработки информации используется с целью увеличения быстродействия процессора и максимального использования всех его возможностей в современных микропроцессорах. Выполнение каждой команды складывается из ряда последовательных этапов, суть которых не меняется от команды к команде. Рассмотрим принципы конвейерной обработки информации на примере пятиступенчатого конвейера
Кэш-независимые алгоритмы: анализ алгоритма перемножения квадратных матрицSemen Martynov
При разработке кэш-независимых алгоритмов (cache-oblivious algorithms) не делается предположений о реальной структуре кэша (а реальная производительность не должна заметно деградировать), но используется модель "идеального кэша"
Задача выделения объекта на изображении: хаотично-фазовая синхронизация и аси...Semen Martynov
Применение осцилляторных нейронных сетей позволяет выделить все объекты на фотоснимке (путём группировки осцилляторов по частоте синхронизации) и переключать внимание между ними. Известны и более простые способы выделения объекта, однако данный метод максимально близко моделирует процесс распознавания, который происходит в человеческом мозгу.
Задача выделения объекта на изображении: хаотично-фазовая синхронизация и аси...
Software engineering seminars: gradle
1. Технологии разработки программного обеспечения
(практика)
Мартынов Семён, Хозяинов Иван
Санкт-Петербургского политехнического университета Петра Великого
Института компьютерных наук и технологий
Кафедра компьютерных систем и программных технологий
18 ноября 2017 г.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 1 / 23
2. Содержание
1 Итоги прошлого семинара
Итоги теста
Тестирование
2 CPP-world
Makefile
CMake
Ninja
3 Java-world
Apache Ant
Apache Maven
Gradle Build Tool
4 Заключение
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 2 / 23
3. Итоги теста
Всего сдано работ: 22 (-1)
Сколько сказали, что сделали ДЗ: 12.5 человек
Уровень владения git: A22 = 3.95, Var = 2.04
Отличия Docker от VirtualBox и LXC: 9 ответов можно развивать
Задача на поиск повторов: 14 решений нормальные
Деплой приложения с MongoDB: 4 человека на побоялись написать
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 3 / 23
4. Тестирование
ФИО, Группа?
Сделал(а) ли я ДЗ?
Как я оцениваю свой уровень владения makefile?
В какой ситуации использование svn может быть более
предпочтительно, чем git?
Написать программу, которая будет вычислять сумму чисел нацело
делящихся на введённое пользователем число. Цикл задать от 0 до
введенного с клавиатуры числа.
Вход: 5 200
Выход: 4100
Как разрешить конфликт слияния в git?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 4 / 23
5. Разбор ДЗ
Вопросы?
Нет чёткой постановки задачи?
Нет чёткого дедлайна?
Работу могут украсть?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 5 / 23
6. Makefile
Стюарт Фельдман (Stuart Feldman), 1977 год (Bell Labs);
Президент ACM, 2006 – 2008.
Синтаксис makefile
цель1 цель2 ...: реквизит1 реквизит2 ...
команда1
команда2
...
Цели
all
clean
install/uninstall
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 6 / 23
8. CMake
CMake – кроссплатформенная система сборки проектов.
Используют:
cURL
LLVM and Clang
Mir
MiKTeX
MySQL and MariaDB
OGRE
Qt (*)
ReactOS
Synergy
zlib
ZeroMQ
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 8 / 23
13. The Ninja build system
Эван Мартин (Evan Martin), 2012 год (Google).
Распределённая система сборки, используется для Google Chrome.
Пример cmake
cc = clang
cflags = -Weverything
rule compile
command = $cc $cflags -c $in -o $out
rule link
command = $cc $in -o $out
build hello.o: compile hello.c
build hello: link hello.o
default hello
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 13 / 23
15. Apache Ant
Apache Ant (Another Neat Tool) – платформонезависимая утилита для
автоматизации процесса сборки программного продукта (аналог make).
Всего имеет около 150 команд, основные:
echo – вывод сообщений в консоль
mkdir – создание директорий
delete – удаление файлов и директорий
javac – компиляция Java–кода
java – запуск class и jar файлов
jar – создание jar файлаМартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 15 / 23
16. Apache Ant
Пример buil.xml
<?xml version="1.0"?>
<project name="HelloWorld" default="run">
<target name="compile">
<mkdir dir="build/classes"/>
<javac destdir="build/classes" includeantruntime="false
<src path="src"/>
</javac>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld" classpath="build/classes"/
</target>
<target name="clean">
<delete dir="build"/>
</target>
</project>
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 16 / 23
17. Apache Maven
Apache Maven (коллекционер знаний) – фреймворк для
автоматизации сборки.
Maven принёс в разработку:
автоматическое управление зависимостями
единый формат описания артефактов (POM)
управление результатами сборки
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 17 / 23
18. Apache Maven
Жизненный цикл:
validate – проверяет корректность метаинформации о проекте
compile – компилирует исходники
test – прогоняет тесты классов из предыдущего шага
package – упаковывает скомпилированные классы в jar
integration-test – отправляет упакованные классы в среду
интеграционного тестирования
verify – проверяет корректность пакета и удовлетворение
требованиям качества
install – отправляет пакет в локальный репозиторий,
deploy – отправляет пакет на удаленный production сервер
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 18 / 23
19. Apache Maven
Пример pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
<modelVersion>4.0.0</modelVersion>
<groupId>ru.spbstu.icc.kspt</groupId>
<artifactId>my-project</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 19 / 23
20. Gradle Build Tool
Gradle – система автоматической сборки, позволяющая использовать
сценарии на языке Groovy.
Позволяет изменять порядок этапов жизненного цикла на основе DAG.
Поддерживает инкрементальные сборки.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 20 / 23
21. Gradle Build Tool
Пример build.gradle
apply plugin: ’java’
version = ’1.0’
repositories {
mavenCentral()
}
dependencies {
compile group: ’commons-collections’, name: ’commons-collec
testCompile group: ’junit’, name: ’junit’, version: ’4.7’
}
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 21 / 23
23. ДЗ:
Реализовать автоматическую сборку докер-образа с исполняемым
файлом.
Запускается Docker-образ с Gradle
Собирает Java-приложение
Собирает Docker-образ с Java-приложением
Перед началом работы, получить issue в git hub.
Вопросы?
Замечания?
Дополнения?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 23 / 23