SlideShare a Scribd company logo
THE GREAT
MIGRATION
@jbaruch
Ты кто такой?●
Барух Садогурский
●
a.k.a. @jbaruch
●
JFrog
●
Artifactory
●
Bintray
●
Groovy это наше все
●
Футболочки классные
InterwebzClient Client
D
N
S
Interaction Download
ES DB DB CDN
Load Balancer
HTTPS
bintray.com dl.bintray.com
Сплошная Груви Любовь
Webapp
&Micro
Grails
Groovy
Spock
Geb
GPars
Build
&Auto
Gradle
Groovy
GVM
Crash
~ 90% Бинтрея на Грувях
Микросервисы? Ха,
сто лет их пишем!
Да ну, это просто
мода такая...
Да это-же SOAP
какой-то! Это не панацея!
Давайте по примерам
1 + 1 =
2
1 + 2 =
Пример номер раз: Sitemap
“А чего не пользовать просто crawler-ы?”
Краулим динамический контент
https://www.flickr.com/photos/calafellvalo/2859947965
Требования от Гугла
Формат XML
Размер 50MB max
Длина 50K entries max
Наивное исполнение
Webapp Jenkins nginx
Sitemap
Domains
Mapper
Немного статистики
10sK Users
80K Repositories
230K Packages
+40 MB of XML
Маппер, сука, тяжелый
Webapp Jenkins nginx
Sitemap
Domains
Mapper
Вот этот
https://www.flickr.com/photos/bryanburke/2854366734
Not the
actual JFrog
offices
Jenkins
Маппер, сука, тяжелый
DB
XML
Garbage
Mapper
Давай, до свидания
https://www.flickr.com/photos/mit-libraries/3424098958
Что нам надо?
Переменная скорость
Минимальноевмешательство
Можно убить
Давайте переделаем!
Site Mapper Jenkins
XML
Быстрое
чтение
Внешний
источник
И можно скриптить
на Грувях!
Ratpack powered
site mapper
HTTP
Commands
Crash
Commands
Dump index as JSON
Slurp with JSONSlurper
Write XML with XMLBuilder
GPars
Давайте переделаем!
ElasticSearch это Грувяшно!
https://github.com/elastic/elasticsearch-groovy
Шустрый sitemap, который не мешает!
Пример номер два: индексация репозиториев
RPM
Redhat
YUM
4 XML+GZ
Repository
POM
Java
Maven
1 XML
Module
DE
Debian
APT
1 TEXT/GZ
Structured
Тот-же принцип, разные инструменты
RPM createrepo
POM Aether
DE
B
reprepo
Client
Index
Binaries
Index Binaries
Представляем: “repomd”
RPM Maven Debian
Bower Docker Gems
NPM Pypi Vagrant
Стандартный расширяемый API для индексеров на Java (или Groovy)
Автоматический обсчет индексов
Client
Publish
Index Binaries
Тяжелый процесс
~600K Files
~3 Hours
~400 MB of Index
Webapp
repomd
https://www.flickr.com/photos/thinredjellies/408275494
С кластером вообще труба
Client Publish
Instance 1 repomd
Load
Balancer
Instance ... repomd
Instance N repomd
DB
Давай, до свидания!
https://www.flickr.com/photos/wackystuff/14931244568
Resque всех спасет
Redis
Atomic, O(1)
Distributed
Persistence
Queries
Replication
Queue
Per type
Worker/
Producer
Jesque
Java
Flavored
Resque
https://github.com/resque/resque
https://github.com/gresrun/jesque
Как это работает
def job = new Job('WorkerClassName', ['arg1', 'arg2'])
jesqueClient.enqueue('queueName', job)
Client Redis Jesque
def factorySettings = [workerName: WorkerClass]
def jobFactory = new MapBasedJobFactory(factorySettings)
def worker = new WorkerImplFactory(jesqueConfig, ['queueName'], jobFactory).call()
threadPool.submit(worker)
Отсыпем Грувей!
enqueue('workerType') {
arg1 = 'value1'
arg2 = false
}
Bintray Redis Gresque
submit(WorkerType) {
conf1 = 'value1'
conf2 = false
}
И тишина...
Bintray
Events
(Quiet
Period)
Bintray
Bintray
Redis
Ratpack,
BTW
Маштабируемые очереди!
Вы не знаете, что такое ад, если не
видели XML в RPM
primary.xml General archive info
filelists.xml Lists files in RPM
other.xml Misc attributes
repomd.xml Inventory of above
Вот вам ад.
DOM/STAX LOL
XMLBuilder рулит
private def primaryPackageBuilder = { del, packageMd ->
del.'package'(type: 'rpm') {
name(packageMd.name)
arch(packageMd.architecture)
version(epoch: packageMd.epoch, ver: packageMd.version, rel:
packageMd.release)
checksum(type: 'sha', pkgid: 'YES', packageMd.sha1Digest)
summary(packageMd.summary)
description(packageMd.description)
packager(packageMd.packager)
url(packageMd.url)
time(file: packageMd.lastModified, build: packageMd.buildTime)
size(package: packageMd.size, installed: packageMd.installedSize,
archive: packageMd.archiveSize)
location(href: packageMd.artifactRelativePath)
format {
'rpm:license'(packageMd.license)
'rpm:vendor'(packageMd.vendor)
'rpm:group'(packageMd.group)
Пример номер три: Генерим
статистику
«Ложь, наглая ложь и
статистика»
Марк Твен
В минуту В день
По
странам
Вот такая красота
Сам по себе мини-
монолит
Per minute
DL Server
DL Server
DL Server
Redis
Per day
Per country
Geo
IP
Mongo
(UI)
Downloadable
Log filesТут не
Тут ищем
100500 скачиваний. Реально много.
Kekekekekekekeke
keke
Not the
actual
datacenter
http://www.mengsbizarreadventure.com/2010/starcraft-2-betaaka-zerg-rush-kekekeke-hd/
Нарушен ПЕО
Per minute
Per day
Per country
Непонятно, где должен жить
Per minute
Per day
Per country
Mongo
(UI)
Downloadable
Log files
Ходит куда-то
Per minute
Per day
Per country
Geo
IP
Mongo
(UI)
Downloadable
Log files
Почикаем!Почикаем!
http://galleryhip.com/black-and-white-fight-scene-kill-bill.html
Что нам надо?
Никаких потерь
Максимальная надежность
Легкая маштабируемость
3-Фазные юниты
Gather Format Scatter
Создаем юнит
Redis
Dispatcher
Redis
Protobuff
(Gradle)
Redis'
Atomic
Dispatcher
Minute formatter
Day formatter
Country formatter
Dispatcher
Mongo
Geo
IP
Whois
UI Scatterer
Log file Scatterer
DL Server
Dispatcher
Minute formatter
Day formatter
Country formatter
Dispatcher
UI Scatterer
Log file Scatterer
DL Server
HTTP
Commands
Crash
Commands
Controller
DL Server
Controller
Dispatcher
Dispatcher
Dispatcher
Dispatcher
Dispatcher
Dispatcher
Formatters Scatterers
Надежная и распределенная статистика
Недостатки
Сборка Кофнигурация
под каждый
сервис
Поддержка
Сервисов
Машин
Контейнеров
Конфигураций
И .т.д.
Версии
Фиксированные?
Гибкие?
Для каждого?
Для нескольких?
Дублируются
Код
Конфигурация
Контекст
Советы от бывалых!
Начинайте без
Выносите когда надо
Пишите на Груви :)
Вопросы
есть?

More Related Content

What's hot

How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
Ontico
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
Alex Chistyakov
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
Дмитрий Столяров
 
Docker networking
Docker networkingDocker networking
Docker networking
Badoo Development
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
Aleksey Fomkin
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
 
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
Ontico
 
Performance optimisation in javascript
Performance optimisation in javascriptPerformance optimisation in javascript
Performance optimisation in javascript
Артем Захарченко
 
Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014
Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014
Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014
CleverDATA
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
CodeFest
 
SOA: Строим свой service mesh
SOA: Строим свой service meshSOA: Строим свой service mesh
SOA: Строим свой service mesh
Ivan Kruglov
 
SOA: послать запрос на сервер? Что может быть проще?!
SOA: послать запрос на сервер? Что может быть проще?!SOA: послать запрос на сервер? Что может быть проще?!
SOA: послать запрос на сервер? Что может быть проще?!
Ivan Kruglov
 
RDSDataSource: Promises
RDSDataSource: PromisesRDSDataSource: Promises
RDSDataSource: Promises
RAMBLER&Co
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
CodeFest
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
SQALab
 
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest
 
JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.
FDConf
 
Мониторинг, когда не тестируешь
Мониторинг, когда не тестируешьМониторинг, когда не тестируешь
Мониторинг, когда не тестируешь
Uptime Community
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
Sergey Xek
 

What's hot (19)

How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
 
Performance optimisation in javascript
Performance optimisation in javascriptPerformance optimisation in javascript
Performance optimisation in javascript
 
Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014
Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014
Реклама со скоростью света. Презентация Сергея Жемжицкого на High Load++ 2014
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
SOA: Строим свой service mesh
SOA: Строим свой service meshSOA: Строим свой service mesh
SOA: Строим свой service mesh
 
SOA: послать запрос на сервер? Что может быть проще?!
SOA: послать запрос на сервер? Что может быть проще?!SOA: послать запрос на сервер? Что может быть проще?!
SOA: послать запрос на сервер? Что может быть проще?!
 
RDSDataSource: Promises
RDSDataSource: PromisesRDSDataSource: Promises
RDSDataSource: Promises
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
 
JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.
 
Мониторинг, когда не тестируешь
Мониторинг, когда не тестируешьМониторинг, когда не тестируешь
Мониторинг, когда не тестируешь
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 

Viewers also liked

Diferencia entre técnicas
Diferencia entre técnicasDiferencia entre técnicas
Diferencia entre técnicas
Mariacamacaroc
 
Actividad quinto mes monica araque.docx
Actividad quinto mes monica araque.docxActividad quinto mes monica araque.docx
Actividad quinto mes monica araque.docx
moni tosca
 
Map db
Map dbMap db
Carta 2015 Restaurante Manolín de Valladolid
Carta 2015 Restaurante Manolín de ValladolidCarta 2015 Restaurante Manolín de Valladolid
Carta 2015 Restaurante Manolín de Valladolid
Restaurante Manolín Valladolid
 
ADA Adicional
ADA AdicionalADA Adicional
ADA Adicional
Alexandra Chale
 
PDT
PDTPDT
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
SPC Adriatics
 
楽するチームリマインダー ラクリマくん
楽するチームリマインダー ラクリマくん楽するチームリマインダー ラクリマくん
楽するチームリマインダー ラクリマくん
佳秀 鍋山
 
Future of SharePoint
Future of SharePoint Future of SharePoint
Future of SharePoint
Joel Oleson
 
Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...
Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...
Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...
Комплето
 
OneDrive For Business - What's new for IT Administrators and End-users
OneDrive For Business - What's new for IT Administrators and End-usersOneDrive For Business - What's new for IT Administrators and End-users
OneDrive For Business - What's new for IT Administrators and End-users
Learning SharePoint
 
SharePoint 2016: Features Overview
SharePoint 2016: Features OverviewSharePoint 2016: Features Overview
SharePoint 2016: Features Overview
ShareGate
 

Viewers also liked (12)

Diferencia entre técnicas
Diferencia entre técnicasDiferencia entre técnicas
Diferencia entre técnicas
 
Actividad quinto mes monica araque.docx
Actividad quinto mes monica araque.docxActividad quinto mes monica araque.docx
Actividad quinto mes monica araque.docx
 
Map db
Map dbMap db
Map db
 
Carta 2015 Restaurante Manolín de Valladolid
Carta 2015 Restaurante Manolín de ValladolidCarta 2015 Restaurante Manolín de Valladolid
Carta 2015 Restaurante Manolín de Valladolid
 
ADA Adicional
ADA AdicionalADA Adicional
ADA Adicional
 
PDT
PDTPDT
PDT
 
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
 
楽するチームリマインダー ラクリマくん
楽するチームリマインダー ラクリマくん楽するチームリマインダー ラクリマくん
楽するチームリマインダー ラクリマくん
 
Future of SharePoint
Future of SharePoint Future of SharePoint
Future of SharePoint
 
Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...
Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...
Контент-маркетинг: как сделать так, чтобы клиенты сами осаждали ваших менедже...
 
OneDrive For Business - What's new for IT Administrators and End-users
OneDrive For Business - What's new for IT Administrators and End-usersOneDrive For Business - What's new for IT Administrators and End-users
OneDrive For Business - What's new for IT Administrators and End-users
 
SharePoint 2016: Features Overview
SharePoint 2016: Features OverviewSharePoint 2016: Features Overview
SharePoint 2016: Features Overview
 

Similar to The Great Migration by Baruch Sadogursky

Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grailsrit2010
 
Grails. Поиски закончены.
Grails. Поиски закончены.Grails. Поиски закончены.
Grails. Поиски закончены.
nekoval
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
SQALab
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Vadim Nesterov
 
UA Mobile 2012
UA Mobile 2012UA Mobile 2012
UA Mobile 2012
dmalykhanov
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
it-people
 
GAE - плюсы/минусы/подводные камни
GAE - плюсы/минусы/подводные камниGAE - плюсы/минусы/подводные камни
GAE - плюсы/минусы/подводные камниYehor Nazarkin
 
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
Yandex
 
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Oleg Chirukhin
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
FDConf
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
Badoo Development
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node js
Alex Tumanoff
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Fwdays
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
Bohdan Danyliuk
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
Кирилл Толкачёв
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
Омские ИТ-субботники
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
Badoo Development
 
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Ruby Meditation
 

Similar to The Great Migration by Baruch Sadogursky (20)

Ruby gui
Ruby guiRuby gui
Ruby gui
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grails
 
Grails. Поиски закончены.
Grails. Поиски закончены.Grails. Поиски закончены.
Grails. Поиски закончены.
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
UA Mobile 2012
UA Mobile 2012UA Mobile 2012
UA Mobile 2012
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
 
GAE - плюсы/минусы/подводные камни
GAE - плюсы/минусы/подводные камниGAE - плюсы/минусы/подводные камни
GAE - плюсы/минусы/подводные камни
 
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
 
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node js
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
 
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
 

More from JavaDayUA

STEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeSTEMing Kids: One workshop at a time
STEMing Kids: One workshop at a time
JavaDayUA
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
JavaDayUA
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
JavaDayUA
 
Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...
JavaDayUA
 
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesThe Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
JavaDayUA
 
20 Years of Java
20 Years of Java20 Years of Java
20 Years of Java
JavaDayUA
 
How to get the most out of code reviews
How to get the most out of code reviewsHow to get the most out of code reviews
How to get the most out of code reviews
JavaDayUA
 
Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8
JavaDayUA
 
Virtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsVirtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOps
JavaDayUA
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java Platform
JavaDayUA
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
JavaDayUA
 
MapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelMapDB - taking Java collections to the next level
MapDB - taking Java collections to the next level
JavaDayUA
 
Save Java memory
Save Java memorySave Java memory
Save Java memory
JavaDayUA
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVM
JavaDayUA
 
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
JavaDayUA
 
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovApache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
JavaDayUA
 
Solution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovSolution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman Shramkov
JavaDayUA
 
Testing in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras SlipetsTesting in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras Slipets
JavaDayUA
 
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevReactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
JavaDayUA
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris Trofimov
JavaDayUA
 

More from JavaDayUA (20)

STEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeSTEMing Kids: One workshop at a time
STEMing Kids: One workshop at a time
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...
 
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesThe Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
 
20 Years of Java
20 Years of Java20 Years of Java
20 Years of Java
 
How to get the most out of code reviews
How to get the most out of code reviewsHow to get the most out of code reviews
How to get the most out of code reviews
 
Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8
 
Virtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsVirtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOps
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java Platform
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
 
MapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelMapDB - taking Java collections to the next level
MapDB - taking Java collections to the next level
 
Save Java memory
Save Java memorySave Java memory
Save Java memory
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVM
 
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
 
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovApache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
 
Solution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovSolution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman Shramkov
 
Testing in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras SlipetsTesting in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras Slipets
 
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevReactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris Trofimov
 

The Great Migration by Baruch Sadogursky

Editor's Notes

  1. Architecture quick overview to fill in Then get to business
  2. Social software distribution platform
  3. The download server is the most important dl.bintray.com Jcenter.bintray.com Jcenter on Grails or Gradle
  4. Runs once a day Iterates over all major content
  5. Runs once a day Iterates over all major content
  6. Don't we all love XML. Makes incremental changes a PITA
  7. Still small Not much content Pragmatic Runs once a day Iterates over all major content. Query GORM and write the output
  8. Incremental update is a PITA
  9. Not quick enough, I love GORM, but gorm is chubby Too much too soon. The are solutions: Could provide more memory, stupid, heroin addiction Fire up an interaction instance closed off to the world and run it there
  10. We cannot allow it to disturb either the webapp or the download server As quick as possible, but throttle should it disturb any service Can be interrupted so that It doesn't do a kamikaze
  11. Reads and writes are concurrent Can be stopped in the middle Speed throttled
  12. The syntax is closer to the source JSON
  13. Explain typed and indexed repositories in bintray Majority of tools host an index consumed by the client. Repositories must update these indexes with every update to the repo Maven also reflects on gradle – it's the same indexing
  14. Create a filesystem folder with all files, run the tool. Run every time you change the index. Requires native tools OS dependent
  15. OS agnostic Embeddable usable by any JVM language
  16. Maven is outstanding - Many package systems embed descriptors in the package – EXPLAIN THIS Have to fetch the descriptors Quad core machine Multiple workers Multiply by amount of customers Concurrent calculations
  17. How can you tell when a multi-module deployment “completes”? - EXPLAIN THIS How can you synchronize multiple embedded repomd processes? Now we are stuck with …
  18. Resque started in github Needed monitorable – throw away tasks Important but not lifesaving critical Queue based workers Jesque – java based
  19. Gpars Handle clustering better Nice DSL
  20. Truely sorry you had to witness
  21. I promise you we don't lie
  22. Don't ask me which country it is; I made it up and I was drunk
  23. Not part of the webapp but a monolith Stats data is fat and we can't afford to retain it. Rather suffer the overhead async
  24. Incremental update is a PITA
  25. Proximity to datacenters
  26. We cannot allow it to disturb either the webapp or the download server As quick as possible, but throttle should it disturb any service Can be interrupted so that It doesn't do a kamikaze
  27. What do I mean? Sounds like a motto; sounds like steve balmer; I assure you these aren't just buzzwords Gather – download servers are spewing out info BAM! Format – Regain data lost when reported Scatter – Make sure that the services facing the user get the information they need. Quick!
  28. Link the different stages with dispatchers. They assure that no data is lost between phases
  29. Especially if the infra, domain , team or concept is new, It'll let you get the hang of things before you've fully committed and gone ahead