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

22
Скорость не в ущерб качеству, web-разработка на Java Анна Тарасенко, 7bits JavaDay-2014

Upload: anna-tarasenko

Post on 16-Jun-2015

617 views

Category:

Engineering


3 download

TRANSCRIPT

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

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

на Java

Анна Тарасенко, 7bitsJavaDay-2014

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

О себе• МФ ОмГУ (ИМИТ) (1993 – 2003, 2009 –

2013)

• В промышленной разработке с 2003 года

• Java – 10+ лет; PL/SQL – 5 лет, JS – 5+ лет

• PHP – 2 года, Python – 2 месяца, Ruby – 2 недели, С# – 2 часа чтения книжки

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

Особенности web• HTTP - протокол без состояния

• Параллельный доступ к данным

• Разнообразие представлений данных и протоколов сериализации

• Поиск и фильтрация, пейджинг

• Разнообразные механизмы валидации форм

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

Особенности web• Высокая вероятность атак – взлом,

DDoS, воровство данных

• Много аналитики по действиям пользователей

• Многообразие языков и часовых поясов

• Многообразие клиентов (браузеров, ОС, устройств)

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

Немного истории

• 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!

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

Требования к web• Быстрый time-to-market

• Continuous: integration, deployment, delivery

• Автоматизация миграций данных

• Логи, журналы, мониторинг всего и вся

• Отзывчивый и быстрый UI с проверками и подсказками, читаемые URI

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

Требования к web• Внятный API, чаще REST

• Адаптивный дизайн под разные устройства

• Устойчивость к взломам, шифрование данных (часто)

• Высокие нагрузки (часто)

• Географическая распределенность (иногда)

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

Статика или динамика?

Недостатки статической типизации:

• Много кода

• Долгая сборка

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

Статика или динамика?

Недостатки статической типизации:

• Много кода – код генерится, много подсказок от IDE

• Долгая сборка – часть фреймворков позволяет менять view без пересборки

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

Статика или динамика?

Преимущества статической типизации:

• Контроль типов, интерфейсы

• Читаемость кода другими людьми

• Можно пускать в код новичков

• IDE с хорошими подсказками

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

А ведь есть еще GWT

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

JVM – наше все?

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

Чего хочется

• Быстрая разработка надежного кода

• Расширяемая архитектура

• Быстрый вход для новичков

• Думать о бизнес-логике, а не об инфраструктуре

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

Почему Java?

• Статическая типизация

• Много инструментов, надо только собрать

• Быстрый вход для новичков

• Слоистая архитектура позволяет сосредоточиться на задаче

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

Java для web

• Сборка и деплой – Maven, Jenkins, TeamCity, Ant

• Управление версиями конфигами – Maven, Ivy, Gradle

• Логи – Log4j и все вокруг него

• Автоматизированное тестирование – JUnit, Mockito, Spock framework

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

Java для web

• Кэширование – Ehcache, Memcached

• Поисковые движки – Lucene, Solr, Elastic search

• Отложенные задачи – JMS, ActiveMQ, Spring Scheduling

• i18n – встроенные средства Spring

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

Web-framework?

• Spring – содержит почти все, что требуется, но сложен в настройке

• Spark – очень простой, но все на статических классах

• NinjaFramework – заявлено много плюшек для web

• Restlet – утверждается, что прост для REST

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

Что мы делаем• Готовим сборку Spring для быстрой

web-разработки, вместо ORM – MyBatis

• Используем DDD-подход в архитектуре, а так же CQRS и другие паттерны Fowler & Co

• Вместо MVC-фреймворков на клиенте – своя наработка на Flight, AJAX-JSON, Bootstrap

• Продаем расширяемую архитектуру по цене прототипа

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

Все пока в процессе!

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

Что почитать/послушать

• Мартин Фаулер. «Архитектура корпоративных программных приложений»

• Эрик Эванс. «Предметно-ориентированное проектирование»

• Блог Мартина Фаулера

• DDD for Rails developers

• Distributed podcast

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

Спасибо!

• Email: [email protected]

• Skype: anna_tarasenko