Tóth Lajos - Személyes élmények az ITIL bevezetésével
Egy .NET fejlesztő élete a Node.js világában
1. Egy .NET fejlesztő élete a Node.js világában
Balássy György
ASP.NET/IIS MVP, ASPInsider
balassy.gyorgy@outlook.com
Blog: http://balassygyorgy.wordpress.com
15. 15
MSTest, MS Fakes
Teljes IDE támogatás
Mindenféle teszthez
Azure-ban igen, máshol?
Mocha + Istanbul + Sinon
Önálló megoldások,
akár együtt is működésre
bírhatók
28. 28
MS SQL Server, MySQL
Kényelmes, gyors
Elérhető as a service
Sok tapasztalat
Cassandra, Couchbase,
DynamoDB
Eventual consistency
Hosszabb fejlesztési idő
Sikeres felhő szolgáltatások egyedi igények
Komoly .NET-es tapasztalat
Elégedettek vagyunk a .NET-tel
Sikeres felhő szolgáltatások egyedi igények
Komoly .NET-es tapasztalat
Elégedettek vagyunk a .NET-tel
JavaScript / CoffeeScript / TypeScript:
- Egyik sem C#, nagyon másfajta gondolkodást igényel
- Bonyolítják a build folyamatot (transpiler)
- Van-e hozzájuk IDE támogatás
Hogyan strukturáljuk a kódunkat, hogy karbantartható legyen?
Class module:
- Elkezdtünk osztályokat definiálni, mikor a legtöbb esetben nincs rájuk szükség (vs WebAPI data access)
- Szinte csak statikus tagokkal dolgozunk, kevés állapotot tárol a kód
Tervezési minták
- Gyakorlatilag nincsenek
- Vannak tipikus "fordulatok", például callback, promise
Dokumentáció
- README
- Lehetne JSDoc, de szinte egyáltalán nem használatos
Microservice architektúra
- Teljesítmény okokból is jó
- Kisebb kódbázis
- Jobb egységbe zárás
- Önállóan tesztelhető, telepíthető
- Számos probléma
- Elosztott tranzakciók, inkonzisztens adatok
- Függőségek, service availability
- Release management, enterprise readiness
Változáskezelés a forráskódban
DVCS modell:
- Van olyan csapat, amelyik most állt át Perforce-ról, vagy TFS-ről nagyon új
- A VS Git támogatása nem az igazi, nem tud mindent és a a GUI-n könnyű eltévedni
Gitflow workflow: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow/
Pull requests
- Automatikusan fordul és tesztelődik minden feature branch
Code Review nélkül nem lehet merge-elni
Akár más csapatok kódjába is (lehetőleg ne CoffeeScriptben vagy GO-ban legyen)
MSBuild
- IDE támogatás
- Nem is kell közvetlenül írni
- Nem is látjuk
- Nem is értjük? (Ki tudja, mi az az MSBuild task? És ki írt már ilyet?)
Gulp / Grunt
- Kizárólag kézi munkával készül
- IDE legfeljebb futtatni tudja
- Könnyű futtatni bármilyen OS-en közvetlenül
- Aktív közösség, sok csomag
MSTest, MS Fakes
- IDE támogatás
- Unit, web test, load test
- Felhő támogatás?
Mocha, Istanbul, Sinon
- Melyiket válasszuk?
- Önálló package-ek, amik akár együtt is képesek működni
Közös kérdések
- Hol a forráskód, ki írta, ki használja, mennyire aktív?
- Mennyire bízhatok meg benne?
- Van-e benne security bug? És abban, amire hivatkozik?
Artifactory
Visual Studio
- Mindent egyetlen eszközből
- Mit használunk belőle?
- Lassú
- Kiváló debug támogatás
NodeJS Tools for Visual Studio (NTVS)
- Project fájl alapú
- Még 1.0 verzió előtt próbáltuk
Most már van benne TS, NPM, profiling és test framework támogatás is
WebStorm
- Teljesen más gyorsbillentyűk, mint VS-ben, nehéz volt megszokni
- JS-hez jobb IntelliSense (VS csak biztosra megy, WebStorm többet felkínál)
- Debug támogatás
Nem elég egy editor?
A Node.js fejlesztők tipikusan nem IDE-t, hanem editort használnak (SublimeText, Brackets)
Tipikusan nyitva egyszerre: parancssor (gulp), WebStorm, Git Extensions, böngésző (Jira, Stash), MySQL Workbench
VSCode
- Lightos, nem IDE, hanem editor
- Keveset tud, de azt nagyon jól, pedig még csak preview
- IntelliSense (akár TS-ből is)
- Git
- Debugging
- Task runner
FxCop
- IDE támogatás
- Könnyen beépíthető a build folyamatba
JSLint, JSHint, ESLint
- Melyiket válasszuk? (Van TSLint és CoffeeLint is)
- Minden team ugyanazt használja
- Közös szabálykészlet kialakítása
Igények
- Rugalmasság (sokféle technológia)
- Integráció más eszközeinkkel (Stash)
TFS, VS Online
- Teljes körű szolgáltatás egyetlen felületen: bug tracking, builds, deployment
- Nagyon jó .NET-es projektekre
TeamCity
- Nehezebb megérteni
- Nagyon rugalmas
- Gulp taskokat is
- Minden feature branchet fordítunk azonnal, Docker image-et építünk, futtatjuk a teszteket, szükség esetén telepítjük a Docker image-et több környezetbe, Git tag
- Sajnos Jira-val nem integrálódik
Microsoft SQL Server, MySQL
- Nagyon kényelmes, gyors
- Aktívan használjuk is
Cassandra, Couchbase, DynamoDB
- Próbálkozás a NoSQL világában
- Valószínűleg teljesítmény és adatméret miatt hosszú távon indokolt lehet
- Eventual consistency-re kell tervezni (redundáns adattárolás, dirty read)
- Hosszabb fejlesztési idő
Tanulási görbe
- Gyorsan össze lehet dobni valamit minimális JavaScript ismerettel
- Nincs egyetlen ijesztően nagy library -> van sok (nagyon sok) kicsi
- Prototípus készítésére jó (?)