Hentry Aiheen esittely Hentry on kevyt ja helppokäyttöinen ajanhallintatyökalu pienille hajautetun hallinnan ketterille kehitystiimeille. Sen pää ominaisuutena on projektikohtainen tehtävien ajanhallinta ja -seuranta. Meneillään olevien projektien tehtävien eteneminen on helposti seurattavissa ja ketterien ohjelmistoprojektien vaatimat tehtävien lisäykset sekä resursoidut ajan muutokset on mahdollista tiimin jäsenille. Sovellus on toteutettu käytettäväksi selaimen välityksellä desktop ja mobiili päätteillä. Arkkitehtuuri ja tuotantolinja
Hentry on julkaistu Azuren WebApp alustalle. Azure App Service on PaaS ratkaisu Microsoftin Azure pilvipalvelualustassa. Sen vahvuus on helpossa resurssien hallinnassa sekä Microsoftin omien sekä muiden osapuolien SaaS ratkaisujen integroinnissa. App Service mahdollistaa automatisoidun palveluiden käyttöönoton ja hallinnan sekä dynaamisen palvelualustan resurssien käytön. Seuraavaksi käydään läpi App Servicen arkkitehtuurin oleellisimmat käsitteet. WebApp resurssiryhmä (resource group) on ns. looginen kontti Azuressa käytössä oleville resursseille. Sinne voidaan lisätä ja sieltä voidaan poistaa manuaalisesti tai automatisoidusti palvelu instansseja, tietokantoja tai muita resursseja. Resurssiryhmistä voi tehdä myös templaatteja, joiden avulla esim. Integraatiotesti ryhmän voi pystyttää yhdellä komennolla. App Service sovellus on ohjelman ajoalusta, joka tukee ASP.NET, Node.js, Java, PHP ja Pythonia. Ohjelmat pyörivät virtualisoidussa koneessa johon on myös mahdollista ajaa Windows PowerShell skriptejä. App Service instanssit mahdollistavat jatkuvan integroinnin ja jatkuvan julkaisun DevOps tuotantoketjun Visual Studio Team Services, Githubin tai Bitbucketin kautta. App Service instansseissa voidaan ajaa test ja staging ympäristöjä sekä suorittaa mikropalvelu arkkitehtuuria. App Service voidaan myös SaaS alustoihin ja se tukee natiivisti yli 50 erilaista palvelua. App Service Plan mahdollistuu ohjelmistoa pyörittävien virtualisoitujen ympäristöjen (VM) hallinnan. App Service Plan määrittää mihin regioniin (West US, East US, West EU jne ) palvelu julkaistaan, instanssien skaalautuvuuden, instanssien koon ja minkä hintatason (tier) instanssi on kyseessä. Deployment slotit mahdollistavat tuotantoon ajon vaiheistamisen (deployment staging) ja eri staging vaiheen helpon tuotantoon viemisen. App Service sovellukselle Azure antaa julkisen IP osoitteen, sekä mahdollisuuden Active Directory (AD) autentikointiin. Azure SQL Database ja loogiset palvelimet tarjoavat tietokannan DaaS ratkaisuna ja monen kannan ajamisen sekä automaattiset synkkaukset ja backupit. Storage Account sisältää App Service instanssien logit sekät niitä pyörittävien VM koneiden logit.
Opiskelija saa käyttöönsä ilmaisen hintatason (tier) App Service Planin App Service on yhdistetty Githubiin, Web App/APIin ja Common Data Servicen avulla ClearDB tietokantaan MVC 5 arkkitehtuuri Hentryssä Hentryssä on käytetty ADO.NET MVC 5 frameworkkia, sillä Azure Web App tukee suoraan vain sitä. Tämä mahdollistaa EF6:llä modelien luomisen suoraan tietokannan pohjalta ja database first kehitykset. View enginenä käytetään Razor 3:a. Sovellus toteutettiin alussa database first periaatteella, mutta lopulta se muuttui hybridiksi, kun ominaisuuksia lisättiin. Modulaariset elementit Hentry pyörii ilmaisen tason App Service Planilla, mutta jos alle laitettaisiin maksullinen tili ja luottokortti, jota on varaa vinguttaa palveluun tulisi kaksi erilaista tapaa skaalata palvelun komponentteja. Azuressa voi tehdä Automation tilin, jolle luodaan erilaisia Runbookkeja. Näitä automaatio ohjeistuksia voi yhdistää, vaikka tietyn tyyppisten virhetilojen tapahtuessa.
Ensimmäinen tapa on ylös skaalaaminen (scale up), jossa yksittäisten instanssien kokoa (muistin ja suorittimien määrä sekä VM koneen käytössä olevaa tallennustilaa) voidaan kasvattaa. Toinen vaihtoehto on ulos skaalaaminen (scale out), jossa rinnakkain ajettavien instanssien määrää kasvatetaan. Skaalaamisen voi tehdä manuaalisti tai automaattisesti luomalla kuormantasaus profiilin Azuren resurssiryhmään. Syötteet ja virheiden käsittely Syötteet tarkistetaan view tasolla javascriptillä ja EF:n toimesta controller tasolla. View tasolla käytetään RE:tä, joka estää virheelliset syötteet suoraan view tasolle ja antaa siitä palautteen käyttäjälle selaimessa. Jos RE:stä päästään läpi EF käy syötteen vielä uudestaan läpi, jonka jälkeen se päästetään tietokantaan. Istunnot Käyttäjänhallinta kulkee istuntojen kautta asiakkaan selaimessa. Istuntoa käytetään myös oikeiden modelejen näyttämiseen. Tietokanta Tietokantana on MySQL pohjainen ClearDB. Olisimme käyttäneet Azuren SQL tietokantaa, mutta se ei kuulu Azuren opiskelijakäyttäjien palveluihin. Emme käyttäneet ulkoista SQL kantaa, koska se ei olisi mahdollistanut Azuren DaaS palvelun käyttöä. Tämä käytännössä tarkoittaa sitä, että meidän kantamme on kahdennettu ja toisen kannan tuhoutuessa Web App jatkaa toisen kannan käyttöä ja samanaikaisesti taustalla nostaa uuden kahdennetun kannan pystyyn. Maksullisella Azure Service planilla tähän saa lisättyä kuormantasaus profiilin kautta ulos- ja ylös skaalautuvuuden.
Ylläpidettävyys Koska ohjelmamme on toteutettu kokonaan Microsoftin MVC 5 mallilla ja sovelluksen laajennukset (nugget paketit) ovat Microsoftin omia voidaan suurella todennäköisyydellä sanoa, että frameworkkia ja laajennuksia tullaan ylläpitämään vielä kauan. MVC 5:ssä käytetään Routing (reititys) teknologiaa http kyselyjen käsittelyssä, mikä käytännössä tarkoittaa, että reititys kutsuu ennalta määriteltyjä modeleita, joista view koostetaan. Reititystä voi tehdä koko sivun sisällölle tai yksittäisen osan sisällölle. Meidän sovelluksessa Header, footer ja muut kiinteät elementit eivät ole reititettyjä, vaan sivulta toiselle siirtyessä vain oleellinen sisältö käyttäjäpäässä ladataan. Tällöin vältytään turhalta saman sisällön uudelleen lataamiselta ja eri sivun osien modelit voidaan tehdä hyvin selkeiksi ja helposti ylläpidettäviksi kokonaisuuksiksi. Web Appeihin on myös säädetty seurattavia varoitusrajoja, joiden avulla voidaan varautua muistin, tietokantojen tai instannssien suorityskyvyn loppumiseen. Tietoturva Hentryn arkkitehtuuri on toteutettu Microsoftin suositteleman MVC 5 mallin mukaisesti, missä eri tasojen välillä käyttäjäsyötteet varmistetaan ja varmennetaan. Internettiin on auki (entrypoint) vain App Servicen julkinen osoite. Tietokannat ja App Service instanssit(+vm) ovat Azuren alustan sisällä. Muut erityisominaisuudet Palvelu on julkaistaan jatkuvan julkaisumallin (CD) ja jatkuvan integroinnin (CI) keinoin. Githubin master branch testataan ja läpi päästessään julkaistaan automaattisesti Azuren Wep Appiin.
Muut dokumentit Requirement specification (vaatimusmäärittely), tuotteen roadmap ja työajanseuranta löytyy projektin repositoriosta https://github.com/laurima/hentry/wiki.
Asennus- ja ylläpito-ohjeet Microsoft Azuren for Students tilin luonti Sinulla tulee olla 1. oma opiskelijatili JA 2. henk koht microsoft tili (gmail tilin voi linkata) HUOM kirjaudu ulos koulun sähköpostista, koska microsoftin palvelut muuten kirjautuvat sillä automaattisesti kaikkialle sisään. Käy rekisteröimässä oma henk koht microsoft tili microsoft imagineen ja vahvista, että olet opiskelija (linkkaa koulusähköposti samaan tiliin). Tämän jälkeen mene tänne https://catalog.imagine.microsoft.com/enus/catalog/product/99 ja varmista että kirjaudut omalla henk koht microsoft tilillä sisään, jonka jälkeen voit rekisteröidä Microsoft Azure for students tilin Tämän jälkeen voit mennä https://portal.azure.com/ ja kirjautua henk koht microsoft tilillä sisään. (Ja edelleen jos olet koulun spostissa kirjautuneena niin se kirjaa automaattisesti sillä sisään, jolloin kirjaudut azure portalista ja webaccessista pois ja sitten azure portaliin sisään omalla microsoft tilillä)
Web App ja ClearDB luonti 1. Kun olet kirjautunut sisään valitse navigointipalkista Resource Groups 2. Etsi Web App + MySQL
3. Nimeä sovellus ja luo uusi resurssiryhmä, jos et ole liittämässä sovellusta jo valmiiseen resurssiryhmään. Valitse kannaksi ClearDB, ellet käytä ulkoista tietokantaa (muuta vaihtoehdot on maksullusia)
4. Odota, että App Service, kanta ja muut resurssit luodaan 5. Kun sovelluksen alla lukee running sen kuvaketta voi kaksoisklikkaamalla pääsee katsomaan App Servicen tietoja.
6. Tässä näkymässä näyt App Servicen perustiedot. Pääset katsomaan kaikki resurssiryhmäsi resurssit navigointi valikon ylimmästä nappulasta All resources heti plus merkin alapuolella.
Github repositoriosta automaattisen deployaamisen lisäys instanssiin 1. Mene sen App Servicen perusnäkymään, johon haluat lisä automaattisen deployaamisen githubista ja valitse Deployment options -> Github
2. Syötä github tunnukset, joilla on hallinnointi oikeus repositorioon (omistaja tai contribuuttori). Azure luo automaattiset webhookit repositorioon.
3. Kun olet valinnut repositorion ja branchin muista painaa alhaalta ok. Samalla voit määrittää myös suorituskykytestejä kun uusi vversio branchista vedetään (Azure määrittää automaattisesti maksimiarvot, joilla opiskelijatilillä voi suorituskykytestejä tehdä)
4. Tämän jälkeen pitäisi githubista tulla automaattisesti deploymentti valitusta branchista
Käyttäjäoikeuksien jako ja hallinta Microsoft Azuressa voi jakaa käyttöoikeuksia resurssi ryhmille tai yksittäisille resursseille. Suositeltavaa on tietenkin antaa vain tarvittava määrä käyttöoikeuksia muille käyttäjille. Kaverilla täytyy olla kanssa henk koht microsoft ja azure tili, jolle oikeudet voidaan jakaa. Mene resurssiin, jolle haluat jakaa käyttäjäoikeuksia -> Access Contro (IAM) -> Add listan päältä -> Select role -> Add users -> Select -> Ok Tämän jälkeen kaverille tulee vahvistus. Jonka jälkeen hän kirjautuu omilla tunnuksillaan Azure portaliin ja löytää jaetyn resurssin All resources tabin alta.
Näkymä Azure Portalin Dashboardista, johon on otettu Web Appin ja tietokannan oleellisia parametrejä seurantaan