SlideShare a Scribd company logo
Скорость не в ущерб
качеству, web-
разработка на Java
Анна Тарасенко, 7bits
JavaDay-2014
О себе
• МФ ОмГУ (ИМИТ) (1993 – 2003, 2009 – 2013)
• В промышленной разработке с 2003 года
• Java – 10+ лет; PL/SQL – 5 лет, JS – 5+ лет
• PHP – 2 года, Python – 2 месяца, Ruby – 2
недели, С# – 2 часа чтения книжки
Особенности web
• HTTP - протокол без состояния
• Параллельный доступ к данным
• Разнообразие представлений данных и
протоколов сериализации
• Поиск и фильтрация, пейджинг
• Разнообразные механизмы валидации форм
Особенности web
• Высокая вероятность атак – взлом, DDoS,
воровство данных
• Много аналитики по действиям
пользователей
• Многообразие языков и часовых поясов
• Многообразие клиентов (браузеров, ОС,
устройств)
Немного истории
• 90-e: CGI, Perl, C++ и вот это все
• Середина 90-х: PHP, Java, JS
• 2000-е: Spring, .NET, Django, Rails, AJAX,
Zend, symfony, Grails и т.д.
• 2010 – 2014: Scala (2003), Clojure (2007), Erlang
(1986)… PRELANG!
Требования к web
• Быстрый time-to-market
• Continuous: integration, deployment, delivery
• Автоматизация миграций данных
• Логи, журналы, мониторинг всего и вся
• Отзывчивый и быстрый UI с проверками и
подсказками, читаемые URI
Требования к web
• Внятный API, чаще REST
• Адаптивный дизайн под разные устройства
• Устойчивость к взломам, шифрование
данных (часто)
• Высокие нагрузки (часто)
• Географическая распределенность (иногда)
Статика или динамика?
Недостатки статической типизации:
• Много кода
• Долгая сборка
Статика или динамика?
Недостатки статической типизации:
• Много кода – код генерится, много подсказок
от IDE
• Долгая сборка – часть фреймворков
позволяет менять view без пересборки
Статика или динамика?
Преимущества статической типизации:
• Контроль типов, интерфейсы
• Читаемость кода другими людьми
• Можно пускать в код новичков
• IDE с хорошими подсказками
А ведь есть еще GWT
JVM – наше все?
Чего хочется
• Быстрая разработка надежного кода
• Расширяемая архитектура
• Быстрый вход для новичков
• Думать о бизнес-логике, а не об
инфраструктуре
Почему Java?
• Статическая типизация
• Много инструментов, надо только собрать
• Быстрый вход для новичков
• Слоистая архитектура позволяет
сосредоточиться на задаче
Java для web
• Template engines (view) – Jade, Freemaker,
Tiles, Sass, CoffeeScript
• Application layer – Spring, JavaEE, Struts,
Stripes
• Работа с БД – Hibernate, JDBC Template, iBatis
• Миграции – LiquiBase, FlyWay
Java для web
• Сборка и деплой – Maven, Jenkins, TeamCity,
Ant
• Управление версиями конфигами – Maven,
Ivy, Gradle
• Логи – Log4j и все вокруг него
• Автоматизированное тестирование – JUnit,
Mockito, Spock framework
Java для web
• Кэширование – Ehcache, Memcached
• Поисковые движки – Lucene, Solr, Elastic
search
• Отложенные задачи – JMS, ActiveMQ, Spring
Scheduling
• i18n – встроенные средства Spring
Web-framework?
• Spring – содержит почти все, что требуется,
но сложен в настройке
• Spark – очень простой, но все на статических
классах
• NinjaFramework – заявлено много плюшек
для web
• Restlet – утверждается, что прост для REST
Что мы делаем
• Готовим сборку Spring для быстрой web-
разработки, вместо ORM – MyBatis
• Используем DDD-подход в архитектуре, а так
же CQRS и другие паттерны Fowler & Co
• Вместо MVC-фреймворков на клиенте – своя
наработка на Flight, AJAX-JSON, Bootstrap
• Продаем расширяемую архитектуру по цене
прототипа
Все пока в процессе!
почитать/послушать
• Мартин Фаулер. «Архитектура
корпоративных программных приложений»
• Эрик Эванс. «Предметно-ориентированное
проектирование»
• Блог Мартина Фаулера
• DDD for Rails developers
• Distributed podcast
Спасибо!
• Email: at@7bits.it
• Skype: anna_tarasenko

More Related Content

Similar to Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014

JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
GeeksLab Odessa
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
Timur Shemsedinov
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
Junior java standard edition developer
Junior java standard edition developerJunior java standard edition developer
Junior java standard edition developer
Dmitriy Neguritsa
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TKConf
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
Roman Dvornov
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
Компетенции Адеква
Компетенции АдекваКомпетенции Адеква
Компетенции Адеква
ADEKVA
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Ontico
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
Pavlo Iuriichuk
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
Илья Середа
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE
 
А кем будете вы?
А кем будете вы?А кем будете вы?
А кем будете вы?
Maria Makarova
 
Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021
Timur Shemsedinov
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ontico
 

Similar to Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014 (20)

JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
Sivko
SivkoSivko
Sivko
 
Junior java standard edition developer
Junior java standard edition developerJunior java standard edition developer
Junior java standard edition developer
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Компетенции Адеква
Компетенции АдекваКомпетенции Адеква
Компетенции Адеква
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
 
А кем будете вы?
А кем будете вы?А кем будете вы?
А кем будете вы?
 
Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 

More from Anna Tarasenko

Отсутствие ценности для клиента - главный убийца бизнеса
Отсутствие ценности для клиента - главный убийца бизнесаОтсутствие ценности для клиента - главный убийца бизнеса
Отсутствие ценности для клиента - главный убийца бизнеса
Anna Tarasenko
 
Выступление на YouLead-2016, Омск, Youth speak
Выступление на YouLead-2016, Омск, Youth speakВыступление на YouLead-2016, Омск, Youth speak
Выступление на YouLead-2016, Омск, Youth speak
Anna Tarasenko
 
Выступление на Youlead-2016, Омск, Speak big
Выступление на Youlead-2016, Омск, Speak bigВыступление на Youlead-2016, Омск, Speak big
Выступление на Youlead-2016, Омск, Speak big
Anna Tarasenko
 
Geek week 2015. Создание полезных приложений в оговоренный срок.
Geek week 2015. Создание полезных приложений в оговоренный срок.Geek week 2015. Создание полезных приложений в оговоренный срок.
Geek week 2015. Создание полезных приложений в оговоренный срок.
Anna Tarasenko
 
Зачем тусоваться с себе подобными
Зачем тусоваться с себе подобнымиЗачем тусоваться с себе подобными
Зачем тусоваться с себе подобными
Anna Tarasenko
 
Тенденции в ИТ (Breakpoint-форум, 2015)
Тенденции в ИТ (Breakpoint-форум, 2015)Тенденции в ИТ (Breakpoint-форум, 2015)
Тенденции в ИТ (Breakpoint-форум, 2015)
Anna Tarasenko
 
Цифровые технологии для организации ламповых мероприятий
Цифровые технологии для организации ламповых мероприятийЦифровые технологии для организации ламповых мероприятий
Цифровые технологии для организации ламповых мероприятий
Anna Tarasenko
 
Инструменты командной разработки (HappyDev-lite'2014)
Инструменты командной разработки (HappyDev-lite'2014)Инструменты командной разработки (HappyDev-lite'2014)
Инструменты командной разработки (HappyDev-lite'2014)
Anna Tarasenko
 
Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014
Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014
Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014Anna Tarasenko
 
Вредные советы организаторам мероприятий
Вредные советы организаторам мероприятийВредные советы организаторам мероприятий
Вредные советы организаторам мероприятийAnna Tarasenko
 
Архитектура в web, доклад на Women techmakers, Omsk, 2014
Архитектура в web, доклад на Women techmakers, Omsk, 2014Архитектура в web, доклад на Women techmakers, Omsk, 2014
Архитектура в web, доклад на Women techmakers, Omsk, 2014Anna Tarasenko
 
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере ОмскаЭффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Anna Tarasenko
 
Производство счастья промышленными методами, для программистов и их менеджеров
Производство счастья промышленными методами, для программистов и их менеджеровПроизводство счастья промышленными методами, для программистов и их менеджеров
Производство счастья промышленными методами, для программистов и их менеджеров
Anna Tarasenko
 

More from Anna Tarasenko (13)

Отсутствие ценности для клиента - главный убийца бизнеса
Отсутствие ценности для клиента - главный убийца бизнесаОтсутствие ценности для клиента - главный убийца бизнеса
Отсутствие ценности для клиента - главный убийца бизнеса
 
Выступление на YouLead-2016, Омск, Youth speak
Выступление на YouLead-2016, Омск, Youth speakВыступление на YouLead-2016, Омск, Youth speak
Выступление на YouLead-2016, Омск, Youth speak
 
Выступление на Youlead-2016, Омск, Speak big
Выступление на Youlead-2016, Омск, Speak bigВыступление на Youlead-2016, Омск, Speak big
Выступление на Youlead-2016, Омск, Speak big
 
Geek week 2015. Создание полезных приложений в оговоренный срок.
Geek week 2015. Создание полезных приложений в оговоренный срок.Geek week 2015. Создание полезных приложений в оговоренный срок.
Geek week 2015. Создание полезных приложений в оговоренный срок.
 
Зачем тусоваться с себе подобными
Зачем тусоваться с себе подобнымиЗачем тусоваться с себе подобными
Зачем тусоваться с себе подобными
 
Тенденции в ИТ (Breakpoint-форум, 2015)
Тенденции в ИТ (Breakpoint-форум, 2015)Тенденции в ИТ (Breakpoint-форум, 2015)
Тенденции в ИТ (Breakpoint-форум, 2015)
 
Цифровые технологии для организации ламповых мероприятий
Цифровые технологии для организации ламповых мероприятийЦифровые технологии для организации ламповых мероприятий
Цифровые технологии для организации ламповых мероприятий
 
Инструменты командной разработки (HappyDev-lite'2014)
Инструменты командной разработки (HappyDev-lite'2014)Инструменты командной разработки (HappyDev-lite'2014)
Инструменты командной разработки (HappyDev-lite'2014)
 
Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014
Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014
Методы генерации идей, Гео-хакатон от EST Technologies, Omsk, 2014
 
Вредные советы организаторам мероприятий
Вредные советы организаторам мероприятийВредные советы организаторам мероприятий
Вредные советы организаторам мероприятий
 
Архитектура в web, доклад на Women techmakers, Omsk, 2014
Архитектура в web, доклад на Women techmakers, Omsk, 2014Архитектура в web, доклад на Women techmakers, Omsk, 2014
Архитектура в web, доклад на Women techmakers, Omsk, 2014
 
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере ОмскаЭффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
 
Производство счастья промышленными методами, для программистов и их менеджеров
Производство счастья промышленными методами, для программистов и их менеджеровПроизводство счастья промышленными методами, для программистов и их менеджеров
Производство счастья промышленными методами, для программистов и их менеджеров
 

Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014

  • 1. Скорость не в ущерб качеству, web- разработка на Java Анна Тарасенко, 7bits JavaDay-2014
  • 2. О себе • МФ ОмГУ (ИМИТ) (1993 – 2003, 2009 – 2013) • В промышленной разработке с 2003 года • Java – 10+ лет; PL/SQL – 5 лет, JS – 5+ лет • PHP – 2 года, Python – 2 месяца, Ruby – 2 недели, С# – 2 часа чтения книжки
  • 3. Особенности web • HTTP - протокол без состояния • Параллельный доступ к данным • Разнообразие представлений данных и протоколов сериализации • Поиск и фильтрация, пейджинг • Разнообразные механизмы валидации форм
  • 4. Особенности web • Высокая вероятность атак – взлом, DDoS, воровство данных • Много аналитики по действиям пользователей • Многообразие языков и часовых поясов • Многообразие клиентов (браузеров, ОС, устройств)
  • 5. Немного истории • 90-e: CGI, Perl, C++ и вот это все • Середина 90-х: PHP, Java, JS • 2000-е: Spring, .NET, Django, Rails, AJAX, Zend, symfony, Grails и т.д. • 2010 – 2014: Scala (2003), Clojure (2007), Erlang (1986)… PRELANG!
  • 6. Требования к web • Быстрый time-to-market • Continuous: integration, deployment, delivery • Автоматизация миграций данных • Логи, журналы, мониторинг всего и вся • Отзывчивый и быстрый UI с проверками и подсказками, читаемые URI
  • 7. Требования к web • Внятный API, чаще REST • Адаптивный дизайн под разные устройства • Устойчивость к взломам, шифрование данных (часто) • Высокие нагрузки (часто) • Географическая распределенность (иногда)
  • 8. Статика или динамика? Недостатки статической типизации: • Много кода • Долгая сборка
  • 9. Статика или динамика? Недостатки статической типизации: • Много кода – код генерится, много подсказок от IDE • Долгая сборка – часть фреймворков позволяет менять view без пересборки
  • 10. Статика или динамика? Преимущества статической типизации: • Контроль типов, интерфейсы • Читаемость кода другими людьми • Можно пускать в код новичков • IDE с хорошими подсказками
  • 11. А ведь есть еще GWT
  • 12. JVM – наше все?
  • 13. Чего хочется • Быстрая разработка надежного кода • Расширяемая архитектура • Быстрый вход для новичков • Думать о бизнес-логике, а не об инфраструктуре
  • 14. Почему Java? • Статическая типизация • Много инструментов, надо только собрать • Быстрый вход для новичков • Слоистая архитектура позволяет сосредоточиться на задаче
  • 15. Java для web • Template engines (view) – Jade, Freemaker, Tiles, Sass, CoffeeScript • Application layer – Spring, JavaEE, Struts, Stripes • Работа с БД – Hibernate, JDBC Template, iBatis • Миграции – LiquiBase, FlyWay
  • 16. Java для web • Сборка и деплой – Maven, Jenkins, TeamCity, Ant • Управление версиями конфигами – Maven, Ivy, Gradle • Логи – Log4j и все вокруг него • Автоматизированное тестирование – JUnit, Mockito, Spock framework
  • 17. Java для web • Кэширование – Ehcache, Memcached • Поисковые движки – Lucene, Solr, Elastic search • Отложенные задачи – JMS, ActiveMQ, Spring Scheduling • i18n – встроенные средства Spring
  • 18. Web-framework? • Spring – содержит почти все, что требуется, но сложен в настройке • Spark – очень простой, но все на статических классах • NinjaFramework – заявлено много плюшек для web • Restlet – утверждается, что прост для REST
  • 19. Что мы делаем • Готовим сборку Spring для быстрой web- разработки, вместо ORM – MyBatis • Используем DDD-подход в архитектуре, а так же CQRS и другие паттерны Fowler & Co • Вместо MVC-фреймворков на клиенте – своя наработка на Flight, AJAX-JSON, Bootstrap • Продаем расширяемую архитектуру по цене прототипа
  • 20. Все пока в процессе!
  • 21. почитать/послушать • Мартин Фаулер. «Архитектура корпоративных программных приложений» • Эрик Эванс. «Предметно-ориентированное проектирование» • Блог Мартина Фаулера • DDD for Rails developers • Distributed podcast