Webové programování je CHALENGE! Milan Čapoun, Samuel Šramko
Představení Milan Čapoun Šéf vývoje webových aplikací v Cleverlance a.s. Samuel Šramko Senior vývojář webových aplikací v Cleverlance
Agenda Co je to webová aplikace? Proč to dělat jednoduše, když to jde i složitě Různé oblasti dovedností, aneb to vše musím umět? Což takhle dát si Angular? Client side vs. Server side Výkon, HA, Bezpečnost, Přenositelnost Clever Akademie Otázky a odpovědi
Cleverlance Enterprise Solutions, a.s. člen skupiny Cleverlance Group Praha Hradec Králové České Budějovice Brno Jeden z největších poskytovatelů IT služeb Ryze česká společnost Bratislava
Co jsou webové aplikace? Aneb kdo nikdy nezkusil?
Vývoj webové aplikace je 1.HTML 2.CSS 3.JavaScript
Webové aplikace v enterprise sféře
Web Server Java Spring Hibernate Cloudová Služba (Google) SQL Webový prohlížeč HTML / CSS JavaScript Angular Backend systém DMS CRM Billing Apod. Databáze
Webové aplikace JDE psát jednoduše a rychle! Proč to tedy dělat složitě?
Protože
Enterprise aplikace mají požadavky Na výkon co když o Vánocích klikne 10.000 lidí naráz? Na bezpečnost co když se mi dostanou do internet bankovnictví? Na high availibility co když potřebujeme systém na hodinu odstavit? To nám utíkají peníze Na udržovatelnost Po vaší poslední malé opravě přestaly komplet fungovat objednávky!
Dříve platilo Veřejné portálové stránky musejí být krásné a poutavé Podnikové Enterprise aplikace můžou být hnusné (nikomu to neříkejte, ale je to tak )
A tak se to komplikuje Webové aplikace se musejí vyvíjet s dodržením design patternů Musejí respektovat zásady bezpečného programování (TOP 10 OWASP) Musí být navrženy s ohledem na výkon V hodně věcech vám pomůžou framewroky ale musíte je umět! A ještě ke všemu musejí být hezké!!!
Různé skilly webového vývoje Java Kreativní design / UX Angular Photoshop HTML / CSS / JS
Kreativní design / UX
Photoshop
Photoshop řezání grafiky
HTML / CSS / JavaScript + = +
Angular nebo jiný FrontEnd Framework Tohle už je skutečné programování
Java nebo jiný middle/backend jazyk
Java nebo jiný middle/backend jazyk
Java a frameworky a nástroje JSF, Wicket, Vaadin, Spring Ve skutečnosti celá rodina frameworků Hibernate Log4j Atd. - Obrovské množství Open source Maven - build JUnit - test Jenkins CI Atd. - Obrovské množství Open source
Tohle všechno je třeba umět! Java Kreativní design / UX Angular Photoshop HTML / CSS / JS
Angular + HTML / CSS
Ukázka Angular Aneb ať chvilku mluví taky ten, kdo tomu opravdu rozumí ;-)
Náročnost vývoje S rozsahem webové aplikace rychle roste náročnost jejího vývoje Rozsah a funkčnost webové aplikace
Není mezi vámi zájemce? Řekněte komukoli, koho by mohlo zajímat
FrontEnd Client side vs. Server side Dosud jsme mluvili hlavně o JavaScript/Angular = Client side Další frameworky: Ember.js Backbone Meteor
FrontEnd Client side vs. Server side Jiné přístupy jsou orientované více Server side frameworky: JSF Wicket Vaadin Řada dalších
Server side Samozřejmě NAKONEC jde zase o HTML/CSS/JS v prohlížeči Ale vývojář primárně nepíše HTML/JS kód, primárně programuje v Javě Z tohoto Java kódu až framework vygeneruje cílový HTML/CSS
Server side proč takhle? Motivace byla taková, že stačí mít pouze Java programátory Nebude nutné mít zvlášť know how HTML/CSS/JS (to vygeneruje framework)
Trendy ve vlnách Server Side Klient Side 2005 ; Wicket 2010 2015 Angular
A aby to nebylo tak jednoduché
Podpora v různých prohlížečích Internet Explorer 6-11, Chrome, Firefox, Safari,
Web na mobilu Dnes je i jisté automatické očekávání, že web bude rozumně dostupný i z mobilu Responzivní design Něco řeší frameworky (Bootstrap, ) ale NENÍ TO ZADARMO!
Pozor na použití session Některé Frameworky (hlavně server side) zakládají automaticky session Pokud se to stane na HomePage a jde o navštěvovanou stránku, obrovsky naroste aloakce paměti Přitom úplně zbytečně, na HomePage nikdo session nepotřebuje. Těch, co poračují v aplikaci dále (s použitím session) je jen zlomek těch, co přijdou na HomePage
Když zákazník říká nechci tam captcha Roboti si vás najdou ;-) Několik tisíc robotických registrací rozeslalo několik tisíc SMS na existující telefonní čísla
Za chyby se platí. Doslova!!!! Důležitost konfirm dialogů Třeba převodní příkaz, co když si uživatel splete políčko pro částku s políčkem pro variabilní symbol?
Nespoléhejte jako vývojáři FrontEnd, že ti na BackEnd vše ošéfují Například, že každá backend metoda v rozumném čase vrátí výsledky Příklad nedávná kauza s registrem vozidel Backendy měly někdy pomalé odezvy. Ale na FE NEBYL timeout = zamrzla celá aplikace a nebylo možné nijak pokračovat
Neřešit bezpečnost je nebezpečné! TOP 10 OWASP Například SQL injection Co když někdo do vyhledávacího formuláře napíše OR 1=1 Výsledek: SELECT FROM Objednavky WHERE userid=123 OR 1=1 Moderní frameworky toto řeší za vás (ale musíte je umět)
Týká se nás clustering? Clustering je nutný z důvodů Výkonostních a/nebo High availibility Vývojář FE většinou nemusí řešit. Ale pozor co když si například něco uložíte na filesystem?
Týká se nás clustering? Soubor.txt Soubor.txt
Webové programování je CHALENGE!
Není mezi vámi zájemce? Řekněte komukoli, koho by mohlo zajímat
Otázky a Odpovědi