SlideShare a Scribd company logo
1 of 35
Download to read offline
MEAN StackMEAN Stack
Kako i kada?
Nenad Pećanac
Serengeti
Sadržaj
1) O MEAN-u
2) Mongo DB
3) Node.JS & Express
4) Angular4) Angular
5) Kada koristiti MEAN?
6) Kada ne koristiti MEAN?
7) Mean.IO & Mean JS
8) Reference
1) O MEAN-u
MEAN
MEAN je Full stack JS framework - potpuni razvojni
okvir za izradu modernih internetskih
stranica i aplikacija.
Sastoji se od 4 tehnologije:
Mongo DB, Express, Angular i Node.JS.Mongo DB, Express, Angular i Node.JS.
Naziv je 2013. godine smislio Valeri Karpov,
član razvojnog tima Mongo DB-a.
MEAN omogućava ubrzan razvoj JS aplikacija.
MEAN
MEAN je pogodan za brzu izradu prototipova aplikacija.
JS se koristi na serverskoj i klijentskoj strani,
podaci u bazi zapisani su u JSON formatu.
Unaprijed konfigurirani projekti dostupni su
za preuzimanje na
MEAN.JS i MEAN.IO stranicama.
Yeoman – alat za generiranje predložaka
za razvoj internetskih aplikacija.
2) Mongo DB
Mongo DB
Mongo DB – najraširenija NoSQL baza podataka.
Podaci se zapisuju u binarnom JSON formatu – BSON.
BSON format je vrlo efikasan za spremanje i pretraživanje.
Mongo DB
Svaki podatak u bazi zapisan je kao Dokument:
Dokumenti se spremaju u Kolekcije.
Kolekcije imaju funkciju kao tablice u relacijskim bazama.
Kolekcije omogućavaju fleksibilniji podatkovni model.
Mongo DB
Kolekcije nemaju kolone kao tablice, ne definiraju
hijerarhijske odnose me u podacima.
Podatkovni model moguće je realizirati ugra ivanjem
ili referenciranjem podataka.
Podatkovni modeli koji koriste ugra ivanjePodatkovni modeli koji koriste ugra ivanje
su denormalizirani, omogućavaju brže čitanje.
Podatkovni modeli koji koriste referenciranje
su normalizirani, koriste se za definiranje hijerarhije.
Mongo DB
Ugra ivanje podataka:
Mongo DB
Referenciranje podataka:
Mongo DB
Nad kolekcijama se grade indeksi i vrše upiti:
Mongo DB
Operacije za agregiranje/sortiranje koriste Map/Reduce
algoritme, čime se postižu visoke performanse.
Mongo DB ima ugra enu podršku za klastering,
replikaciju, backup, monitoring i HA.
Mongo DB usluge dostupne su u cloudu:
Amazon, IBM, Red Heat, VMWare, MongoLab ...
NoSQL baza nije primjerena kod programskih rješenja
koja zahtjevaju strogu hijerarhiju i kontrolu
nad podacima.
U MEAN-u ju je po potrebi moguće zamijeniti sa MySQL-om.
3) Node.JS & Express
Node JS
Node.JS je platforma za izradu brzih i skalabilnih mrežnih
aplikacija, izgra ena na Chrome-ovom JS V8 runtime-u.
Node.JS je platforma za server-side JS.
Sadrži asinhrone biblioteke za upravljanje datotekama,
soketima, te za HTTP komunikaciju.soketima, te za HTTP komunikaciju.
Node.JS koristi efikasan, neblokirajući I/O model obrade podataka.
Prikladan je za brzu razmjenu velike količine podataka
i izradu aplikacija za rad u realnom vremenu,
distribuiranih na različitim ure ajima.
Node JS
Node.JS izgra en je kao platforma, koja se sastoji od raznih
modula, koji implementiraju odre ene funkcionalnosti.
Npr. za obradu HTTP zahtjeva, potrebno je koristiti HTTP modul:
var http = require('http');
NPM je Node-ov upravljač modulima, koristi se izNPM je Node-ov upravljač modulima, koristi se iz
komandne linije.
Instaliranje novog modula:
npm install module_name
Node JS
Primjer >Node.JS HTTP server; file: http.js:
var http = require("http");
http.createServer(function (request, response) {
request.on("end", function () {request.on("end", function () {
response.writeHead( 200, { 'Content-Type': 'text/plain' });
response.end('Hello HTTP!');
});
}).listen(8080);
Exec: node http.js
Express
Express je minimalističan, brz i efikasan razvojni okvir za izradu
internet aplikacija na Node.JS-u.
Express podržava sve potrebne funkcionalnosti za izradu
single-page, multi-page ili hibridnih web aplikacija.
Tako er implementira dodatne funkcionalnosti za:Tako er implementira dodatne funkcionalnosti za:
- korištenje ostalih protokola pored HTTP-a,
- za autentifikaciju korisnika,
- upravljanje greškama,
- parsiranje POST zahtjeva
...
Express
Primjer >Node.JS + Express HTTP server:
var express = require('express');
var app = express();
app.get('/helloworld', function(req, res){app.get('/helloworld', function(req, res){
res.send('Hello World');
});
var server = app.listen(3000, function() {
console.log('Listening on port %d', server.address().port);
});
Node JS - performanse
Trajanje operacija na serveru:
Node JS - performanse
Mrežne operacije traju višestruko duže od svih ostalih.
Razlog tome je čekanje na izvršavanje I/O operacija na serveru.
Node.JS obra uje I/O operacije asinkrono, korištenjem
internog thread-poola ili asinkronih I/O API-ja OS-a.
Node JS - performanse
Node.JS ima najbolje performanse kad obrada zahtjeva ne
uključuje CPU intenzivne operacije.
4) Angular
Angular
JS MVC framework za izradu dinamičkih HTML predložaka.
Omogućava efikasan razvoj klijentskih aplikacija.
Angular koristi Ajax i JSON za komunikaciju sa Node-om.
Angular
http://tutorialzine.com/2013/08/learn-angularjs-5-examples/
Angular
<form ng-app ng-controller="OrderFormController">
<h1>Services</h1>
<ul><li ng-repeat="service in services"
ng-click="toggleActive(service)"
ng-class="{active:service.active}"> {{service.name}}
<span>{{service.price | currency}}</span>
</li></ul>
<div class="total">Total:
<span>{{total() | currency}}</span>
</div>
</form>
5) Kada koristiti MEAN?
Kada koristiti MEAN?
Prilikom izrade prototipova aplikacija.
Ukoliko se koristi u produkciji, potrebno je ukloniti
CPU-intenzivne operacije iz Event-Loopa
i veliku pažnju posvetiti obradi grešaka,
koja ukoliko je neispravno implementirana možekoja ukoliko je neispravno implementirana može
srušiti server.
Za izradu višekorisničkih, real-time aplikacija kao npr. CHAT.
Za izradu CRUD aplikacija, npr. BLOG.
Za izradu Data-streaming aplikacija.
Za izradu Proxy-a.
6) Kada ne koristiti MEAN?
Kada ne koristiti MEAN?
Za izradu enterprise aplikacija.
Kada su potrebne transakcijske servisne operacije.
Kada je potrebno obavljati CPU-intenzive operacije na serveru.
Kad se zahtjeva stroga relacijska hijerarhija nad modelom
podataka (može se, ali vjerojatno nije dobra ideja).podataka (može se, ali vjerojatno nije dobra ideja).
Node.JS je “mlada” tehnologija, trenutna verzija je 0.10.26.
Mnoga rješenja koje su u drugim tehnologijama već
implementirana tek treba implementirati na Node-u.
7) MEAN.IO & MEAN.JS
MEAN.IO
MEAN.JS
8) Reference
Reference
MEAN.IO: http://www.mean.io/
MEAN.JS: http://meanjs.org/
MONGO DB: http://www.mongodb.org/
NODE JS: http://nodejs.org/NODE JS: http://nodejs.org/
EXPRESS: http://expressjs.com/
ANGULAR: https://angularjs.org/
YEOMAN.IO: http://yeoman.io/
SCOTCH.IO: http://scotch.io/

More Related Content

What's hot

Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013Matija Blagus
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Nenad Pecanac
 
Putting REST to rest with gRPC
Putting REST to rest with gRPCPutting REST to rest with gRPC
Putting REST to rest with gRPCKarlo Novak
 
Big Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzBig Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzwebburza
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
 

What's hot (14)

JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
 
Javantura Zagreb 2014 - Java na klijenstskoj strani - Ivan Vučak
Javantura Zagreb 2014 - Java na klijenstskoj strani - Ivan VučakJavantura Zagreb 2014 - Java na klijenstskoj strani - Ivan Vučak
Javantura Zagreb 2014 - Java na klijenstskoj strani - Ivan Vučak
 
Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013
 
JavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad PečanacJavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad Pečanac
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014
 
Putting REST to rest with gRPC
Putting REST to rest with gRPCPutting REST to rest with gRPC
Putting REST to rest with gRPC
 
JavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko SirotićJavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko Sirotić
 
JavaCro'15 - BOOTylicious Spring - Karlo Novak
JavaCro'15 - BOOTylicious Spring - Karlo NovakJavaCro'15 - BOOTylicious Spring - Karlo Novak
JavaCro'15 - BOOTylicious Spring - Karlo Novak
 
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija KranjecJavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
 
JavaCro'15 - Enterprise service bus - Juraj Ćutić
JavaCro'15 - Enterprise service bus - Juraj ĆutićJavaCro'15 - Enterprise service bus - Juraj Ćutić
JavaCro'15 - Enterprise service bus - Juraj Ćutić
 
Big Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzBig Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzz
 
JavaCro'15 - API as a new architecture - Miroslav Rešetar
JavaCro'15 - API as a new architecture - Miroslav RešetarJavaCro'15 - API as a new architecture - Miroslav Rešetar
JavaCro'15 - API as a new architecture - Miroslav Rešetar
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)
 
SQL Azure
SQL AzureSQL Azure
SQL Azure
 

Viewers also liked

Viewers also liked (20)

JavaCro'14 - Sustainability of business performance and best practices – Zlat...
JavaCro'14 - Sustainability of business performance and best practices – Zlat...JavaCro'14 - Sustainability of business performance and best practices – Zlat...
JavaCro'14 - Sustainability of business performance and best practices – Zlat...
 
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor SauerJavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
 
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter PilgrimJavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
 
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
 
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan RagužJavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
 
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško VukmanovićJavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
 
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
 
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen ČikaraJavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
 
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
 
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
 
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
 
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan JanssenJavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
 
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan IvanovićJavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
 
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
 
JavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan KrešićJavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan Krešić
 
JavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko ElezovićJavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko Elezović
 
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
 
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
 
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir DžaferovićJavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
 

Similar to JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac

AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević Kruno Ris
 
Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseKristijan Duvnjak
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaFive
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeMihovil Rister
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeMatija Šmalcelj
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Denis Kranjčec
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister
 
ATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core AdvancedATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core AdvancedNETMedia
 
Mob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaMob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaSlaven Brumec
 
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u AzureuLuka Lovosevic
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayNETMedia
 
Web App Security for Devs
Web App Security for DevsWeb App Security for Devs
Web App Security for DevsAxilis
 
Web App Security for Devs
Web App Security for DevsWeb App Security for Devs
Web App Security for DevsVedran Maršić
 
GraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisiGraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisiPedja Jevtic
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXIvan Kaselj
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXAndrej Ko?i?
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. Stipe Predanic
 
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptxPOSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptxLarlochLes
 

Similar to JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac (20)

AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević
 
Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL database
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, Javantura
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacije
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
 
ATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core AdvancedATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core Advanced
 
Mob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaMob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacija
 
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
(ATD10) Postar zvoni dvaput - dostava podataka u Azureu
 
Uvod u aplikacije - Luka Mandić
Uvod u aplikacije - Luka MandićUvod u aplikacije - Luka Mandić
Uvod u aplikacije - Luka Mandić
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump Day
 
Web App Security for Devs
Web App Security for DevsWeb App Security for Devs
Web App Security for Devs
 
Web App Security for Devs
Web App Security for DevsWeb App Security for Devs
Web App Security for Devs
 
GraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisiGraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisi
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptxPOSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
POSLOVNE PROGRAMSKE APLIKACIJE I MIGRACIJE BAZA.pptx
 

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac

  • 1. MEAN StackMEAN Stack Kako i kada? Nenad Pećanac Serengeti
  • 2. Sadržaj 1) O MEAN-u 2) Mongo DB 3) Node.JS & Express 4) Angular4) Angular 5) Kada koristiti MEAN? 6) Kada ne koristiti MEAN? 7) Mean.IO & Mean JS 8) Reference
  • 4. MEAN MEAN je Full stack JS framework - potpuni razvojni okvir za izradu modernih internetskih stranica i aplikacija. Sastoji se od 4 tehnologije: Mongo DB, Express, Angular i Node.JS.Mongo DB, Express, Angular i Node.JS. Naziv je 2013. godine smislio Valeri Karpov, član razvojnog tima Mongo DB-a. MEAN omogućava ubrzan razvoj JS aplikacija.
  • 5. MEAN MEAN je pogodan za brzu izradu prototipova aplikacija. JS se koristi na serverskoj i klijentskoj strani, podaci u bazi zapisani su u JSON formatu. Unaprijed konfigurirani projekti dostupni su za preuzimanje na MEAN.JS i MEAN.IO stranicama. Yeoman – alat za generiranje predložaka za razvoj internetskih aplikacija.
  • 7. Mongo DB Mongo DB – najraširenija NoSQL baza podataka. Podaci se zapisuju u binarnom JSON formatu – BSON. BSON format je vrlo efikasan za spremanje i pretraživanje.
  • 8. Mongo DB Svaki podatak u bazi zapisan je kao Dokument: Dokumenti se spremaju u Kolekcije. Kolekcije imaju funkciju kao tablice u relacijskim bazama. Kolekcije omogućavaju fleksibilniji podatkovni model.
  • 9. Mongo DB Kolekcije nemaju kolone kao tablice, ne definiraju hijerarhijske odnose me u podacima. Podatkovni model moguće je realizirati ugra ivanjem ili referenciranjem podataka. Podatkovni modeli koji koriste ugra ivanjePodatkovni modeli koji koriste ugra ivanje su denormalizirani, omogućavaju brže čitanje. Podatkovni modeli koji koriste referenciranje su normalizirani, koriste se za definiranje hijerarhije.
  • 10. Mongo DB Ugra ivanje podataka:
  • 12. Mongo DB Nad kolekcijama se grade indeksi i vrše upiti:
  • 13. Mongo DB Operacije za agregiranje/sortiranje koriste Map/Reduce algoritme, čime se postižu visoke performanse. Mongo DB ima ugra enu podršku za klastering, replikaciju, backup, monitoring i HA. Mongo DB usluge dostupne su u cloudu: Amazon, IBM, Red Heat, VMWare, MongoLab ... NoSQL baza nije primjerena kod programskih rješenja koja zahtjevaju strogu hijerarhiju i kontrolu nad podacima. U MEAN-u ju je po potrebi moguće zamijeniti sa MySQL-om.
  • 14. 3) Node.JS & Express
  • 15. Node JS Node.JS je platforma za izradu brzih i skalabilnih mrežnih aplikacija, izgra ena na Chrome-ovom JS V8 runtime-u. Node.JS je platforma za server-side JS. Sadrži asinhrone biblioteke za upravljanje datotekama, soketima, te za HTTP komunikaciju.soketima, te za HTTP komunikaciju. Node.JS koristi efikasan, neblokirajući I/O model obrade podataka. Prikladan je za brzu razmjenu velike količine podataka i izradu aplikacija za rad u realnom vremenu, distribuiranih na različitim ure ajima.
  • 16. Node JS Node.JS izgra en je kao platforma, koja se sastoji od raznih modula, koji implementiraju odre ene funkcionalnosti. Npr. za obradu HTTP zahtjeva, potrebno je koristiti HTTP modul: var http = require('http'); NPM je Node-ov upravljač modulima, koristi se izNPM je Node-ov upravljač modulima, koristi se iz komandne linije. Instaliranje novog modula: npm install module_name
  • 17. Node JS Primjer >Node.JS HTTP server; file: http.js: var http = require("http"); http.createServer(function (request, response) { request.on("end", function () {request.on("end", function () { response.writeHead( 200, { 'Content-Type': 'text/plain' }); response.end('Hello HTTP!'); }); }).listen(8080); Exec: node http.js
  • 18. Express Express je minimalističan, brz i efikasan razvojni okvir za izradu internet aplikacija na Node.JS-u. Express podržava sve potrebne funkcionalnosti za izradu single-page, multi-page ili hibridnih web aplikacija. Tako er implementira dodatne funkcionalnosti za:Tako er implementira dodatne funkcionalnosti za: - korištenje ostalih protokola pored HTTP-a, - za autentifikaciju korisnika, - upravljanje greškama, - parsiranje POST zahtjeva ...
  • 19. Express Primjer >Node.JS + Express HTTP server: var express = require('express'); var app = express(); app.get('/helloworld', function(req, res){app.get('/helloworld', function(req, res){ res.send('Hello World'); }); var server = app.listen(3000, function() { console.log('Listening on port %d', server.address().port); });
  • 20. Node JS - performanse Trajanje operacija na serveru:
  • 21. Node JS - performanse Mrežne operacije traju višestruko duže od svih ostalih. Razlog tome je čekanje na izvršavanje I/O operacija na serveru. Node.JS obra uje I/O operacije asinkrono, korištenjem internog thread-poola ili asinkronih I/O API-ja OS-a.
  • 22. Node JS - performanse Node.JS ima najbolje performanse kad obrada zahtjeva ne uključuje CPU intenzivne operacije.
  • 24. Angular JS MVC framework za izradu dinamičkih HTML predložaka. Omogućava efikasan razvoj klijentskih aplikacija. Angular koristi Ajax i JSON za komunikaciju sa Node-om.
  • 26. Angular <form ng-app ng-controller="OrderFormController"> <h1>Services</h1> <ul><li ng-repeat="service in services" ng-click="toggleActive(service)" ng-class="{active:service.active}"> {{service.name}} <span>{{service.price | currency}}</span> </li></ul> <div class="total">Total: <span>{{total() | currency}}</span> </div> </form>
  • 28. Kada koristiti MEAN? Prilikom izrade prototipova aplikacija. Ukoliko se koristi u produkciji, potrebno je ukloniti CPU-intenzivne operacije iz Event-Loopa i veliku pažnju posvetiti obradi grešaka, koja ukoliko je neispravno implementirana možekoja ukoliko je neispravno implementirana može srušiti server. Za izradu višekorisničkih, real-time aplikacija kao npr. CHAT. Za izradu CRUD aplikacija, npr. BLOG. Za izradu Data-streaming aplikacija. Za izradu Proxy-a.
  • 29. 6) Kada ne koristiti MEAN?
  • 30. Kada ne koristiti MEAN? Za izradu enterprise aplikacija. Kada su potrebne transakcijske servisne operacije. Kada je potrebno obavljati CPU-intenzive operacije na serveru. Kad se zahtjeva stroga relacijska hijerarhija nad modelom podataka (može se, ali vjerojatno nije dobra ideja).podataka (može se, ali vjerojatno nije dobra ideja). Node.JS je “mlada” tehnologija, trenutna verzija je 0.10.26. Mnoga rješenja koje su u drugim tehnologijama već implementirana tek treba implementirati na Node-u.
  • 31. 7) MEAN.IO & MEAN.JS
  • 35. Reference MEAN.IO: http://www.mean.io/ MEAN.JS: http://meanjs.org/ MONGO DB: http://www.mongodb.org/ NODE JS: http://nodejs.org/NODE JS: http://nodejs.org/ EXPRESS: http://expressjs.com/ ANGULAR: https://angularjs.org/ YEOMAN.IO: http://yeoman.io/ SCOTCH.IO: http://scotch.io/