Your SlideShare is downloading. ×
0
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)

3,732

Published on

13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги) …

13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)

Аннотация
Не так давно с некоторым изумлением узнал, что Java для нагруженных систем представляется совершенной terra incognita. Хотя и совершенно не хочется бороться с мифами, по крайней мере, с удовольствием расскажу, как просто и без хлопот использовать Java в вебе. Про "суровый" highload рассказывать не буду, а вот про простые решения - с удовольствием. Ну и на закуску расскажу, за что я нежно люблю блобы.

О себе
Teamlead сколько себя помню, успел поработать и в "Яндекс.Деньгах" и в "БК Марафон". Люблю простые решения, сложные задачи и хорошую коммуникацию.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,732
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Банальности, проверенные опытом Keep it simple, stupid! Java под нагрузкой, в поисках проблем... © Дельгядо Филипп, 2012 1
  • 2. Про что этот докладЯ буду говорить про веб-проекты:«отягощенные нагрузкой» нагрузка не самое главное в системе миллионы страниц в суткипростые для обычных разработчиков с вменяемыми сроками и бюджетомна Java © Дельгядо Филипп, 2012 2
  • 3. Почему JavaЯ ее хорошо знаюМного вменяемых разработчиковОчень богатая инфраструктураХорошая производительность «из коробки»Свобода выбора железа и OSБеспроблемность © Дельгядо Филипп, 2012 3
  • 4. Итак, веб-фреймворкиРодные каркасы Struts 2 JSF Spring MVCНе совсем родные Grails (Groovy) Play! (Scala)Ну и практически все, что можно себе вообразить (под сотнюразнообразных решений) © Дельгядо Филипп, 2012 4
  • 5. И почему они нам не подходятУ всех этих прекрасных решений есть несколько неприятныхособенностей Магия!!! Требования к разработчикам Требования к верстальщикам Конкретная направленность © Дельгядо Филипп, 2012 5
  • 6. И что еще есть?А при этом у «больших» используется совсем другоеXScript (Яндекс, был в open-source) сервисы-сервисы-сервисы Xml/xslt/lua Java-freeFrontik (HH) А тот же XScript, только python вместо lua/xmlДа и у всех прочих все примерно одинаково и совсем не так, как впопулярных каркасах. © Дельгядо Филипп, 2012 6
  • 7. И как выглядит SOA © Дельгядо Филипп, 2012 7
  • 8. А вот так это выглядит в Java © Дельгядо Филипп, 2012 8
  • 9. Используемые технологииЧто нам будет нужно из Java World Servlets Spring IoC Velocity Jackson Future и Fork&Join Annotations & Reflections © Дельгядо Филипп, 2012 9
  • 10. Добавляем магиюЧто-бы все выглядело совсем прекрасно Автоопределение типа команды Сессии Аутентификация и авторизация I18n и l10n Spring Cache © Дельгядо Филипп, 2012 10
  • 11. Пример кода на frontend@Command(path = "/user/login")@NotAuthorizedpublic class LoginCommand implements ICommand<HttpCommandRequest, LoginCommand.MyResponse> {public MyResponse execute(HttpCommandRequest request, final Context context) {final String login = request.getParameter("email");final String password = request.getParameter("password");Future<User> user; user = serviceExecutor.doLocal(context, new Callable<User>() { @Override public User call() throws Exception { return b2BUserService.login(login); } }); return new MyResponse(user.get());}} © Дельгядо Филипп, 2012 11
  • 12. Сколько стоитТрудоемкость и объем Примерно 2-3 человеконедели для среднего java dev Меньше сотни классов Несколько тысяч строк Какую-то сложность вызывают пара основных классов Требования к разработчикам на frontend А никаких дополнительных требований На обучение написанию frontend-команд уходит день Требования к разработке на backend Знание Java core Знание Spring IoC (что уже сравнимо с Java Core) Вполне можно использовать junior java © Дельгядо Филипп, 2012 12
  • 13. Особенности разработкиВерстка сама пишет эскиз для frontendа Включая серверную валидацию (кроме сложных случаев) Описывает контракт сервер-версткаКонтракт верстка-сервер самодокументирована Фактически, граница проходит между frontend и backend и полностью описывается на JavaРазработка верстки и бизнес-логики независимы Заглушки на frontend пишет верстка, не дожидаясь серверной разработки Модели в бизнес-логики не зависят от логики отображения © Дельгядо Филипп, 2012 13
  • 14. Граничные условияВсе вышесказанное не стоит применять, если У вас уже есть разработчики с опытом в подходящем frameworkе У вас уже есть разработчики под PHP У вас нет особых требований к производительности У вас работают гуру, для которых проще все написать в Akka на ScalaВсе вышесказанное можно попробовать, если У вас точно будут приличные нагрузки У вас нет времени на идеальные решения Вы не делаете второй Facebook Ожидается заметное количество ajax У вас есть специфические пожелания © Дельгядо Филипп, 2012 14
  • 15. Уф, почти все Ну и хватит про WEB © Дельгядо Филипп, 2012 15
  • 16. Пара слов про persistance Почему я люблю блобы На самом-то деле, я просто ненавижу ORM © Дельгядо Филипп, 2012 16
  • 17. Как я использую блобыpublic <T extends Document> T updateDocument (T document){ Document document = this.getJdbcTemplate().update ( update table Table (…) set values (…), document.getNextVersion(), document.getExpectedVersion(), document.getCode(), document.getName(), serializeToClob(document), document.getValueFormat() ); return document;} © Дельгядо Филипп, 2012 17
  • 18. Например, деревоНапример, посмотрим на простенькое дерево с листьями(древовидный справочник) Map<String, List<String>> parents; Map<String, String> names; Map<String, DocumentRef> documents; Map<String, List<String>> binding;Совершенно не хочется тут видеть: Нормализованную БД ОРМ NoSQL © Дельгядо Филипп, 2012 18
  • 19. Плюсы Простота реализации Простота изменения структуры Производительность Все плюшки РСУБД Обновление версий ПО Предсказуемость © Дельгядо Филипп, 2012 19
  • 20. Минусы Неканоничность Нереляционность Производительность Кошмар для отчетов © Дельгядо Филипп, 2012 20
  • 21. МифыНе нормализуемостьПроизводительностьИзбыточностьСложный поиск © Дельгядо Филипп, 2012 21
  • 22. ПрактикиХорошо использовать для прототипированияЛегко сделать оптимистическую блокировку, историю,версионированиеВсегда, кроме самого объекта, храните в БД тип объекта иверсию формата, в котором записан объект © Дельгядо Филипп, 2012 22
  • 23. Реальные проблемы Репликация и кластеризация на некоторых СУБД Сложности в драйверах у некоторых СУБД Года через два промышленной эксплуатации потихоньку блобы начинают исчезать © Дельгядо Филипп, 2012 23
  • 24. Граничные условияПроще использовать в рамках Transaction ScriptНаличие хорошего сериализатора (Jackson)Часто меняющиеся структуры данныхНаличие DBA © Дельгядо Филипп, 2012 24
  • 25. Всем спасибо Вопросы?Dph.main@gmail.comYatb.livejournal.com © Дельгядо Филипп, 2012 25

×