Pavel Müller
26.11.2012

AspectWorks RADAR – říjen 2012



U nás v AspectWorks pravidelně sledujeme Technology Radar firmy ThoughtWorks. Uvědomili jsme si, že přestože publikujeme příspěvky na blogu a občas i někde přednášíme, žádný z prezentovaných názorů nelze považovat za oficiální názor celé firmy. Rozhodli jsme se proto, že budeme vydávat vlastní AspectWorks RADAR, vždy jednou za tři měsíce, a v něm se zaměříme na nějakou konkrétní technologickou oblast. 

RADAR v našem podání ale nebude výsledkem nějaké dohody úzké skupiny elitních architektů, ale diskuze, které se může zúčastnit kdokoli z firmy, přispět vlastním nápadem a obhájit si svůj pohled na dané téma. RADAR by měl sloužit i jako vodítko pro nové projekty, protože říká, jaké nástroje a knihovny ve firmě standardně používáme, jaké chceme vyzkoušet a co lze naopak už dopředu zavrhnout. První setkání pro Radar se konalo v kavárně Starbucks na Malé Straně a napoprvé nebylo určeno žádné téma. Šlo spíš o to nacvičit si model diskuze a připravit možná témata pro další firemní setkání. Přesto jsme prošli přes ty nejzákladnější technologie a postupy, které AspectWorks používá a v budoucnu bude chtít používat nebo alespoň vyzkoušet. Následuje tedy stručný seznam oblastí. V budoucnu vše bude detailněji probráno. Každá oblast je hodnocena do tří kategorií.

  • Používat – aktuálně preferovaná technologie nebo nástroj. Použijeme na projektu, pokud neexistuje zásadní důvod proti nebo pokud si nechceme na projektu vyzkoušet něco z kategorie „Zkusit“.
  • Zkusit – nadějná věc. Rádi bychom si vyzkoušeli na reálném projektu a postupně začali zavádět. Má šanci stát se u nás preferovanou technologií. Doporučujeme sledovat.
  • Nepoužívat – Nechceme vůbec používat. Pro nás zastaralá, nevhodná nebo neoblíbená technologie. To neznamená, že pro ostatní firmy nemusí být dobrá, ale pro AspectWorks v současnosti nepřipadá v úvahu.


Jazyk

  • Používat – Java, JavaScript
  • Zkusit – Groovy
  • Nepoužívat – Scala, Ruby


Pokud budeme realizovat v budoucnu projekt, určitě to bude v Javě. Nechceme zavádět žádný nový jazyk do našeho portfolia. Návrhy jako Scala, Ruby nebo další jsme zavrhli. Jedinou výjimku tvoří Groovy. Už teď píšeme na některých projektech unit testy v Groovy a možná by stálo za, ho vyzkoušet na některém projektu jako hlavní jazyk.

Server

  • Používat – Tomcat, JBoss
  • Zkusit – Jetty, Node.js
  • Nepoužívat – IBM Websphere, Oracle WebLogic, GlassFish


Pokud nasazujeme aplikace, nasazujeme na Tomcat. V případě potřeby aplikačního serveru je naším favoritem JBoss. Zásadně se vyhýbáme komerčním serverům, ale i jiným open-source aplikačním serverům. Chystáme se pro některé účely vyzkoušet a začít využívat Jetty. Hlavně jako embedded řešení třeba v kombinaci s pohodlným instalátorem. Taky sledujeme projekt Node.js a doufáme, že ho na nějakou vhodnou příležitost vyzkoušíme třeba na streamování, atp.

Datové úložiště

  • Používat – MySQL
  • Zkusit – NoSQL databáze, PosgreSQL
  • Nepoužívat – komerční databáze


Databáze je část systému, kde máme obvykle velmi malé slovo. Databázi diktuje většinou zákazník. Když už volíme, tak většinou MySQL. Závěrem diskuze ale je, že bychom rádi začali MySQL opouštět a používat něco jiného. Vnímáme nedostatky ve škálovatelnosti a nejistota kolem budoucnosti MySQL nás také vede k nějaké změně. PosgreSQL je sice přirozená volba, ale je nutné se s ní seznámit zejména z hlediska správy a údržby. Jako nadějné vidíme i různé NoSQL přístupy. Máme několik kandidátů pro dokumentová nebo grafová úložiště (Neo4J nebo MongoDB). Komerční databáze používáme pouze na přání zákazníků.

Přístup k datům

  • Používat – JPA 2 API, Hibernate implementace, JDBC
  • Zkusit – Spring Data
  • Nepoužívat – iBatis, EclipseLink


Z Javy přistupujeme k datům přes JPA 2 API. Jako implementaci k tomu používáme Hibernate. V případě speciálních dotazů přímo JDBC (resp. Spring JDBC). Na tom se asi nebude příliš měnit. Chtěli bychom si vyzkoušet Spring Data pro nové typy úložišť. Ostatní ORM nástroje nebo knihovny zatím odkládáme.

Střední vrstva

  • Používat – Spring
  • Nepoužívat – EJB, JBoss Seam


Spring je pro nás jedničkou a ani zatím nevidíme v této oblasti nic, co bychom mohli zařadit do kategorie Zkusit.

Webový framework

  • Používat – Spring MVC


Aktuálně používáme Spring MVC, ale jsme nespokojeni. Zejména nám chybí nějaké hotové vizuální komponenty, jako jsou u jiných frameworků. Vyvíjet a udržovat si vlastní knihovnu komponent se nám ukazuje jako nákladné, chybové a omezující. Kandidátů na náhradu jsou desítky a proto je oblast webových frameworků určitě jedno z nejzajímavějších témat, která máme.

Verzovací systém

  • Používat – Subversion
  • Zkusit – Git
  • Nepoužívat – CVS, komerční řešení


Poslední oblast, kterou jsme probírali, je verzovací systém. Používáme a ještě nějakou dobu budeme používat SVN, ale Git už zkoušíme a zvažujeme jeho plné nasazení. Zejména práce offline a možnost zavedení povinných code review se nám hodně líbí. Zatím plnému nasazení brání podpora nástrojů, ale vidíme Git velmi perspektivně. Na první setkání to byla určitě plodná diskuze a splnila cíl definovat si základní technologie, které AspectWorks používá. Ukázalo se ale to, co jsme předpokládali, že každá s oblastí si zaslouží samostatný prostor a připravenější diskuzi. Tématem příštího RADARu budou proto Datová úložiště. Představíme si alternativní databázové systémy a budeme diskutovat o jejich použití na konkrétních projektech.

Vaše emailová adresa nebude zveřejněna

Komentáře

Děkujeme za váš komentář
Další
  • Luboš

    Myslel jsem, že v podnikové sféře už MySQL nikdo nepoužívá a ono vida :-) Spring lze na některých projektech nahradit Java EE 6, které je celkém slušné, vše ve standartu a bez dalších závislostech na Spring a knihovnách třetích stran...

  • Jako vnitrofiremní diskuze to jistě muselo být zajímavé. Ale pro externího čtenáře to moc přínosné není - sice se dozví, co ve firmě používáte a k čemu máte skoro až averzi :-) ale nedozví se proč. A to je asi to, co bude většinu čtenářů zajímat. Proč je tak skvělý Hibernate a proč nepoužívat EclipseLink? Atd. Jsem zvědavý na příští radar, třeba bude tak zajímavý, jako ten od ThoughtWorks.

  • Stan Svec

    Chtělo by to asi mnohem více rozepsat, proč jste se rozhodli pro zařezení daného produktu/technologie do dané kategorie. V této formě mi to připadá takové nic neříkající. Na druhou stranu pro příchadné uchazače pracovního místa ve Vaší firmě to může být zajímavé čtení.

  • Luboš Račanský

    @StanSven Ano, je to i pro uchazeče, aby měli přehled, jaké technologie používáme. Děkujeme za připomínku, příště důvody rozepíšeme.

  • Michal Smrž

    Určitě dobrá věc, ale jak psal Guido, chybí tomu to zdůvodnění proč ano a proč ne. Já mám třeba z cca 85% jiný názor (JPA, Subversion / Git, MySQL / Weblogic / Websphere, Scala), zajímaly by mě vaše argumenty.

  • Guido: Myslím že to není o tom, že by některá technologie byla "tak skvělá". Spíš jde o to, že používáme příliš mnoho technologií a snažíme se zjistit, kterých se zbavit. Technologie navíc zastarávají, takže je dobré mít určitý výhled kupředu. Michal Smrž: řekl bych že použití technologií ve firmě není tak docela otázkou osobních preferencí. Není to ani otázka argumentů, jako spíš kalkulace ve snaze zůstat atraktivní pro zákazníky i uchazeče o práci a přitom mít co nejméně technologií a systémů. Jde o to, které technologie mají zákazníci (MySQL), které technologie ovládají všichni stávající i potenciální vývojáři (Java), jaká je stávající infrastruktura (SVN) a jestli některé nová technologie nemohou vyřešit naše problémy (Git).

  • Já bych ještě doplnil, že tenhle první Radar byl takový průřezový. Preference byly rychle posány a žádná velká argumentace neproběhla. Podle toho vypadá i tato zpráva. Ale už v dalším lednovém Radaru bude zvoleno jedno konkrétní téma, kde budeme důvody výběru probírat mnohem víc. Téma bude Datová úložiště. Pobavíme se o databázích a i nových možnostech jako jsou NoSQL databáze, big table, atp.

  • Michal Smrž

    @Richard Šerý Tomu rozumím, ale pak je matoucí srovnání s ThoughtWorks radarem, protože ten má dle mého názoru jiné ambice.

    1. Tak určitě. Nemáme ambice nějak mu konkurovat nebo dělat to samé, jen jsme se jím inspirovali.

  • Petr Tucny

    Uff, Scala ne a SVN ano, jo? Zrejme dobry oddil...

  • Při vývoji webových aplikací používáme Eclipse IDE. Z workspace dostáváme Maven závislosti na Tomcat pomocí pluginu Sysdeo. Toto řešení funguje, ale není ideální. Nastavení aplikace lze ovšem jednoduše upravit tak, aby šla spouštět na tc Serveru přímo z STS (SpringSource Tool Suite).