Document D-4 Ministerie van Infrastructuur en Milieu Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten Versie 1.0 Datum Status 15 juli 2014 Definitief Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 Colofon Versie 1.0 Contactpersoon Paul Leunissen M 06 - 5250 6691 [email protected] Ministerie van Infrastructuur en Milieu Hoofddirectie Financiën, Management en Bedrijfsvoering Directie Concern Informatievoorziening Afdeling Architectuur en Informatie Management Team Architectuur Koningskade 4 Postbus 20906 2500 EX Den Haag Auteurs Stephen Oostenbrink Pagina 3 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 Inhoud 1 Inleiding ........................................................................................................... 7 1.1 Identificatie .................................................................................................................. 7 1.2 Leeswijzer .................................................................................................................... 7 1.3 Doel van dit document .................................................................................................... 7 1.4 Referenties ................................................................................................................... 7 1.5 Afkortingen .................................................................................................................. 7 1.6 Begrippen .................................................................................................................... 7 2 Eisen aan applicaties .......................................................................................... 8 2.1 Opzet applicaties ........................................................................................................... 8 2.2 Applicatie ..................................................................................................................... 8 2.3 Ontwikkelen voor het Standaard Platform ........................................................................... 9 2.4 Scheiden van omgevingsspecifieke configuratie ................................................................. 11 2.5 Databases .................................................................................................................. 11 2.6 Database wijzigingen.................................................................................................... 12 2.7 ESB........................................................................................................................... 13 2.8 Applicatie Server (AS) containers.................................................................................... 13 2.9 Performance ............................................................................................................... 14 2.10 Applicaties zijn clusterbaar ............................................................................................ 15 2.11 Applicaties zijn Java EE 6 compliant ................................................................................ 15 2.12 Webservices zijn stateless ............................................................................................. 15 2.13 Versioneren ................................................................................................................ 16 2.14 Omgevingsspecifieke configuratiebestanden ..................................................................... 19 2.15 Aanlever formaat van artefact(en) .................................................................................. 19 2.16 Uitrollen ..................................................................................................................... 20 3 Leveranciersomgeving ...................................................................................... 21 3.1 Eisen ......................................................................................................................... 21 3.2 PKIoverheid certificaat .................................................................................................. 21 3.3 Opzet ........................................................................................................................ 21 3.4 Databases .................................................................................................................. 22 3.5 Ingebruikname ............................................................................................................ 23 3.6 Command line client ..................................................................................................... 23 3.7 Black box ................................................................................................................... 23 3.8 Ondersteuning ............................................................................................................ 24 4 Bijlage 1 XSD’s ................................................................................................ 25 4.1 common.xsd ............................................................................................................... 25 4.2 application-deployment-meta.xsd ................................................................................... 26 Pagina 5 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 1 Inleiding 1.1 Identificatie Dit document beschrijft de eisen die het Standaard Platform van het Ministerie van Infrastructuur en Milieu (IenM) stelt aan leveranciers zodat hun maatwerksoftware samenwerkt met het Standaard Platform. 1.2 Leeswijzer Om dit document goed te begrijpen wordt het document IMEA Katern Standaard Platform als bekend verondersteld. 1.3 Doel van dit document Het doel van dit document is het informeren van leveranciers aan welke eisen hun maatwerksoftware moet voldoen om gebruik te kunnen maken van het Standaard Platform. 1.4 Referenties De volgende documenten zijn relevant om dit document goed te begrijpen. # 1.5 Referentie Document 1 Afkortingen en begrippen IenM - Standaard Platform - Afkortingen en begrippen v0.9.docx 2 SGA IMEA - Katern - Service Gerichte Architectuur - v1.0.docx 3 SP IMEA - Katern - Standaard Platform - v1.0.docx 4 Koppelingen IMEA - Katern - ESB Koppelingen - v1.0.docx 5 Aansluitvoorwaarden IMEA - Aansluitvoorwaarden - v1.0.docx Afkortingen In dit document worden de volgende afkortingen gehanteerd. Zie het document IenM Standaard Platform Afkortingen en begrippen [Afkortingen en begrippen]. 1.6 Begrippen Aangezien dit document voor diverse doelgroepen bedoeld is en het in algemene zin belangrijk is dat een document op een eenduidige manier geïnterpreteerd wordt, volgen hierna diverse begrippen die van belang zijn bij het lezen van dit document. Zie het document IenM Standaard Platform Afkortingen en begrippen [Afkortingen en begrippen]. Pagina 7 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 2 Eisen aan applicaties Maatwerksoftware moet aan een aantal eisen voldoen om gebruik te maken van het Standaard Platform. Hierdoor zal de applicatie correct werken op het Standaard Platform en automatisch uitgerold worden. De eisen beschreven in dit hoofdstuk zijn gerealiseerd als referentie implementatie zodat ontwikkelaars beschikken over een werkend voorbeeld, zie hoofdstuk 4. 2.1 Opzet applicaties Een applicatie bestaat uit een front-end en de backend componenten die ontsloten worden met webservices. Deze webservices zijn altijd ontkoppeld door de ESB. ID Eis OA01 Front-end: De front-end ook wel aangeduid als interactiekanaal is de gebruikersinterface die verantwoordelijk is voor het afhandelen van de gebruikersinteractie en terugkoppeling naar de gebruiker. De front-end bevat geen business logica. Business logica is onderdeel van de backend en wordt met webservices ontsloten. De front-end maakt gebruik van de backend webservices via koppelingen op de ESB. Rechtstreekse koppelingen zijn niet toegestaan. Voorbeelden van een interactiekanaal zijn mobile, app, web en desktop. OA02 Koppelingen: Een koppelvlak op de ESB. Een ESB zorgt voor ontkoppeling tussen webservice afnemende systemen en webservice aanbiedende systemen. OA03 Backend: Met backend wordt alles bedoeld dat verantwoordelijk is voor een specifiek groep functionaliteit én data. De functionaliteit van een backend wordt ontsloten via webservices. Deze webservices zijn niet direct te benaderen maar altijd via een koppeling op de ESB. De backend functionaliteit kan via webservices ook aan andere systemen dan de eigen front-end beschikbaar gesteld worden. Hierdoor wordt een eenduidig resultaat over interactiekanalen en systemen heen gegarandeerd. OA04 Gegevens: De gegevens van een applicatie ook wel aangeduid als applicatiedata staat in een database. Deze gegevens zijn alleen via de backend toegankelijk. OA05 Een applicatie kan bestaan uit verschillende componenten. Deze component worden door architectuur geïdentificeerd. De componenten kennen elk een eigen release- en beheercyclus en moeten als zelfstandige component uitgerold kunnen worden. 2.2 Applicatie ID Eis AG01 De gestructureerde gegevens van een applicatie worden opgeslagen in een database. Deze gegevens zijn alleen via de backend toegankelijk. AG02 Applicaties die gebruik maken van het Standaard Platform zijn OS agnostisch. Dit betekent dat er binnen de applicaties geen aannames gedaan mogen worden over het besturingssysteem waarop het Standaard Platform draait. Denk hierbij bijvoorbeeld aan het gebruik van File.seperator in plaats van het hard coderen van een ‘/’ of ‘\’ karakter. Daarnaast moeten alle bestandsverwijzingen Pagina 8 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 hoofdlettergevoelig geïmplementeerd worden, zodat bestanden ook gevonden worden op besturingssystemen die hiervan uitgaan. Een URL is een uniek adres waar op een applicatie te benaderen is. URL worden volgens de volgende systematiek opgebouwd. http(s)://<omgeving>.<applicatienaam | status>.<domein>/[applicatie context] Een voorbeeld voor de actieve versie van een applicatie met context root https://acc.actief.ilt.nl/inspectieview Een voorbeeld voor de actieve versie van een applicatie zonder context root https://acc.inspectieview.ilt.nl Een voorbeeld voor een nieuwe versie van een applicatie https://acc.nieuw.ilt.nl/inspectieview Op deze manier is het mogelijk om meerdere versies van een applicatie naast elkaar te draaien. Een URL element maakt gebruik van kleine letters. Omgeving Omgeving waarin de applicatie actief is: dev, tst, int, acc, pre of prd. domein Domein waar de applicatie actief is: ienm.nl, ilent.nl, rws.nl, nea.nl. Systemen die in de buitenwereld een eigen identiteit hebben, bijvoorbeeld Olo of LAVS, hebben een eigen domein (omgevingsloket.nl, landelijkasbestsysteem.nl). applicatienaam De logische naam van de applicatie. Als deze onderdeel is van het domein dan wordt geen status opgenomen in het domein, omdat dit de actieve versie impliceert. Als de applicatienaam wordt gebruikt dan is er geen applicatiecontext. status Status geeft aan of het de actieve of nieuwe versie van een applicatie betreft. applicatiecontext De context waaronder de applicatie beschikbaar is. Deze wordt niet gebruikt indien de applicatienaam wordt gebruikt. 2.3 Ontwikkelen voor het Standaard Platform Om het ontwikkelen op basis van het Standaard Platform zo eenvoudig mogelijk te maken stelt IenM een tweetal kant en klare omgevingen beschikbaar als virtuele machine (VM). Hiermee beschikt de leverancier in haar eigen omgeving over een volledig werkend Standaard Platform inclusief clustering en automatisch uitrolmechanisme. Hierdoor kan de leverancier zich richten op het ontwikkelen van de applicatie en hoeft zich niet bezig te houden met het inrichten van het platform (infrastructuur en middleware). Pagina 9 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 ID Eis VM01 De leverancier dient met de VM images in eigen omgeving te testen of de applicatie correct werkt op het Standaard Platform en automatisch uitgerold kan worden. VM02 De leverancier dient de voorgeschreven Standaard Platform componenten met de gespecificeerde versies te gebruiken. VM03 Het is niet toegestaan om instellingen van Standaard Platform componenten te wijzigen, bijvoorbeeld geheugen, caching, poortnummers, databasesinstellingen en beveiligingsinstellingen. VM05 Een applicatie stelt een health service beschikbaar op basis van REST en JSON. Met deze service kan de status van alle applicatie componenten opgevraagd kunnen worden. Bijvoorbeeld: { “health”: { “Versie”: “1.3.5”, “Front-end”: “OK”, “Services”: [ “UserAdmin”: { “Status”: “OK”, “Versie”: “1.0.0”, “Gemiddelde response tijd”: “950ms”, “Langste response tijd”: “2045ms”, “Kortste response tijd”: “670ms”, “Afgesproken response tijd”: “1000ms”, “Requests:”: 1200, “Errors”: 12 }, “Login”: { … } ] “Database”: “OK”, “DMS”: “OK”, … } } Hiermee ligt de kennis van de status bij de applicatie zelf en kan in een keer een overzicht opgevraagd van de status van alle applicatie componenten. Deze informatie wordt door de monitoring gebruikt om de status van de applicatie componenten te monitoren en te waarschuwen bij afwijkingen. VM06 De health service kan informatie over een component als geheel aanleveren (http://acc.ienm.nl/lavs/v1/health/check/simple) of gedetailleerde informatie zoals beschreven in VM05 (http://acc.ienm.nl/lavs/v1/health/check/full). VM07 Een applicatie dient ook een webpagina beschikbaar te stellen waarmee de health service informatie direct opgevraagd kan worden door een beheerder. Zie hoofdstuk 3 voor een verdere toelichting van de VM images. Pagina 10 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 2.4 Scheiden van omgevingsspecifieke configuratie Omgevingsspecifieke configuratie instellingen zijn instellingen die verschillen per omgeving (ONT, TST, INT, ACC, PRE en PRD). ID Eis SO01 De omgevingsspecifieke instellingen worden in aparte configuratiebestanden geplaatst. Deze configuratiebestanden worden in de GR gezet. SO02 Een applicatie haalt de omgevingsspecifieke instelling op uit de GR met behulp van de ConfigurationLoader API. 2.4.1 Onderscheid vertrouwelijke en niet vertrouwelijke configuratie Bij omgevingsspecifieke configuratie instellingen wordt onderscheid gemaakt tussen vertrouwelijke en niet vertrouwelijke instellingen. Vertrouwelijke configuratie instellingen zijn parameters die vanuit informatie beveiligingsoogpunt als gevoelig worden beschouwd. Denk hierbij aan gebruikersnamen, wachtwoorden en interne IP adressen. Vertrouwelijke instellingen worden door TB beheerd en niet vertrouwelijke door FB. De ConfigurationLoader API zorgt dat vertrouwelijke en niet vertrouwelijke instellingen transparant voor de webapplicatie afgehandeld worden. ID Eis VO01 Bij omgevingsspecifieke configuratie instellingen wordt onderscheid gemaakt tussen vertrouwelijke en niet vertrouwelijke instellingen die in verschillende bestanden worden opgeslagen. 2.4.2 Cachen van omgevingsspecifieke configuratie instellingen Vanuit performance oogpunt is het niet gewenst dat de omgevingsspecifieke configuratie instellingen bij elke aanroep uit de GR worden ingelezen. Om dit te voorkomen worden de omgevingsspecifieke configuratie instellingen gecached. Cachen van de omgevingsspecifieke configuratie instellingen wordt door de ConfigurationLoader API zelf geregeld. De ConfigurationLoader API zal de omgevingsspecifieke configuratie instellingen na een configureerbare periode automatisch opnieuw inlezen. Het is ook mogelijk om via de ConfigurationLoader API het opnieuw inlezen te forceren. ID Eis CO01 Het is niet toegestaan om omgevingsspecifieke configuratie instellingen in de applicatie zelf te cachen in welk vorm dan ook. 2.5 Databases Applicatiedata staat in een database die in een databasecompartiment staat. Dit databasecompartiment is onderdeel van het Standaard Platform. Het Standaard Platform stelt als enige eis dat de gebruikte database door Liquibase ondersteund wordt. Pagina 11 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 ID Eis DB01 De volgende databaseplatformen zijn beschikbaar: PostgreSQL, SQL Server en Oracle. DB02 De voorkeur gaat uit naar PostgreSQL dan naar SQL Server en als laatste optie Oracle. 2.6 Database wijzigingen Liquibase wordt gebruikt voor de definitie van het initiële databasestructuur en eventuele initiële gegevens. Ook wijzigingen in de databasestructuur of de gegevens en migreren van gegevens worden middels Liquibase scripts doorgevoerd. Hierdoor wordt het mogelijk om database wijzigingen als onderdeel van de applicatie te packagen en automatisch uit te voeren als onderdeel van het automatische uitrolmechanisme. ID Eis DW01 Liquibase wordt gebruikt voor de definitie van het initiële databasestructuur en eventuele initiële gegevens (stamgegevens). DW02 Wijzigingen in de databasestructuur of de gegevens en migreren van gegevens worden middels Liquibase scripts doorgevoerd. DW03 Het eenmalig inladen van data mag handmatig gebeuren. DW04 Voor het terugkerend inladen van data dient de applicatie zelf voorzieningen treffen. 2.6.1 Initiëren Liquibase scripts Het uitvoeren van de Liquibase scripts wordt via de Servlet Listener geïnitieerd. Hierdoor wordt de Liquibase script als eerste actie na het starten van de webapplicatie uitgevoerd. Dit zorgt er bovendien voor dat het uitrollen van de applicatie faalt als de Liquibase scripts falen. 2.6.2 ID Eis LI01 Een applicatie stelt een Servlet Lister beschikbaar om Liquibase te initiëren. Database wijzigingen zijn niet-destructief De kern van het maken van niet-destructieve wijzigingen is het opdelen van wijzigingen in zo klein mogelijke refactorings. Zo is het splitsen van een tabel een aaneenschakeling van de kleinere refactorings: toevoegen tabel en een aantal keer verplaats kolom. ID Eis ND01 Het is mogelijk dat meerdere versies van dezelfde applicaties hetzelfde databaseschema gebruiken. ND02 Bij het doorvoeren van database wijzigingen met Liquibase scripts moet worden gewaarborgd dat alle gemaakt wijzigingen niet-destructief zijn, zodat verschillende versie van de applicaties blijven functioneren. ND03 Database wijzigingen zijn opgedeeld in kleine aangeschakelde refactorings. Pagina 12 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 Hieronder worden een aantal niet-destructieve database refactorings beschreven. Deze zijn gebaseerd op het boek Database Refactoring [2]. De volgende tabel geeft een lijst met mogelijke refactorings weer. Een complete lijst van refactorings is te vinden in het boek Database Refactoring [2]. 2.6.3 Refactoring Uitleg Drop Column http://www.databaserefactoring.com/RemoveColumn.html Merge Tables http://www.databaserefactoring.com/MergeTables.html Move Column http://www.databaserefactoring.com/MoveColumn.html Rename Column http://www.databaserefactoring.com/RenameColumn.html Replace One-To-Many With Associative Table http://www.databaserefactoring.com/ReplaceOneToMany.html Split Table http://www.databaserefactoring.com/SplitTable.html Merge Columns http://www.databaserefactoring.com/MergeColumns.html Add Lookup Table http://www.databaserefactoring.com/AddLookupTable.html WSO2 DSS Bij het gebruik van Data Services Server (DSS) zijn aanvullende instructies nodig om Liquibase te gebruiken om database wijzigingen automatisch uit te rollen. Er dient een minimale webapplicatie te zijn die enkel als doel heeft de Liquibase scripts uit te voeren. De webapplicatie artefact wordt samen met het DSS artefact als applicatie artefact aangeboden en uitgerold. 2.7 2.8 ESB ID Eis KE01 Het gebruik van custom mediators is alleen toegestaan in overleg met architectuur. KE02 Zie voor de overige eisen het document IenM - ESB Koppelingen - Eisen. Applicatie Server (AS) containers Er zijn per applicatie twee type Applicatie Server (AS) containers beschikbaar. Eén stateful en één stateless. Een stateful container houdt tussen aanroepen door sessie informatie bij en wordt voor de front-end (UI) gebruikt. De stateless container houdt geen sessie informatie bij en wordt gebruikt voor de backend en webservices1. ID Eis AS01 De front-end draait in een stateful container. Dit is een “domme” gebruikersinterface die geen business logica bevat. AS02 De backend draait in een stateless container. De backend bevat de business logica en ontsluit de applicatiegegevens. 1. Dit zijn de webservices die de backend functionaliteit ontsluiten. Pagina 13 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 De containers zijn geoptimaliseerd voor het doel waar deze voor dienen, o.a. door het beperken van het beschikbare geheugen. 2.8.1 Container Geheugen Geclusterd (HA) Java EE profiel Stateful 4 GB Ja Web Stateless 1 GB Nee Full Gedeeld of dedicated Een AS container kan door een aantal applicaties gedeeld worden of dedicated zijn voor een enkele applicatie. Dit wordt per applicatie bepaald aan de hand van het verwachte gebruik, vereiste schaalbaarheid en het bedrijfsrisico bij verstoring van de dienstverlening. Een applicatie kan bestaan uit meerdere componenten. Deze componenten kunnen een AS container delen of verdeeld worden over verschillende containers. Hoe applicatie componenten worden verdeeld wordt bepaald aan de hand van het verwacht gebruik, vereiste schaalbaarheid en het bedrijfsrisico bij verstoring van de dienstverlening. ID Eis GD01 De componenten van een applicatie worden in overleg met Architectuur bepaald. GD02 De deployment model van applicatie componenten wordt in overleg met Architectuur bepaald. 2.8.2 Capaciteit Het is mogelijk dat er meerdere instanties van een container type op een server draaien voor een applicatie om de verwerkingscapaciteit te vergroten. De inrichtingskeuze is afhankelijk van de benodigde capaciteitseis, vereiste schaalbaarheid en verwacht gebruik van de applicatie. 2.9 ID Eis CA01 Het aantal applicatie containers wordt in overleg met Architectuur bepaald. Performance Applicaties dienen gebruik te maken van de caching mechanisme van de applicatiecontainer om te voorkomen dat de database wordt belast met veelvoorkomende verzoeken. Het SP biedt een gedistribueerde cache mechanisme dat over geclusterde containers heen werkt. ID Eis PE01 Applicaties maken gebruik van caching door gebruik te maken van JPA 2 en object type (entities) zijn cache enabled. PE02 De cache periode is per object type (entity) instelbaar door een functioneel beheerder. Pagina 14 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 2.10 Applicaties zijn clusterbaar Alle Standaard Platform componenten zijn geclusterd. Een applicatie moet om kunnen gaan met een geclusterde omgeving. Een applicatie mag er niet vanuit gaan dat verschillende aanroepen door dezelfde server worden afgehandeld. Hier moet bij het ontwikkelen rekening mee gehouden worden. 2.10.1 ID Eis CL01 Een applicatie moet kunnen draaien met een geclusterde omgeving. De HTTP sessie is serializable ID Eis SE01 Gegevens van de front-end die in de HTTP sessie worden opgeslagen moeten serializable zijn, zodat deze tussen de containers in een cluster uitgewisseld kunnen worden. 2.10.2 Grootte van de HTTP sessie ID Eis GR01 Bij clustering worden gegevens van de front-end in de HTTP sessie uitgewisseld tussen de containers in een cluster. Om dit snel en betrouwbaar te kunnen doen moet de grootte van de sessie beperkt worden tot maximaal 10MB. 2.10.3 Persisteren van gegevens Voor het persisteren van gegevens tussen verschillende aanroepen wordt gebruik gemaakt van de database, de HTTP sessie of een gedeeld bestandssysteem. ID Eis PG01 Het is niet toegestaan om gegevens op het lokaal bestandssysteem op te slaan, omdat het niet gegarandeerd is dat dezelfde server een volgende aanroep afhandelt. PG02 2.11 Het bestandssysteem moet configureerbaar zijn. Applicaties zijn Java EE 6 compliant ID Eis EE01 Alleen features van de Java EE 6 specificatie uit het profile behorende bij het type applicatie (zie paragraaf 2.7) mogen gebruikt worden. 2.12 Webservices zijn stateless ID Eis WS01 Een webservice is altijd stateless. Dit betekent dat binnen de webservice zelf, in de applicatiecontainer, geen state mag worden bijgehouden in een HTTP of EJB sessie. Pagina 15 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 WS02 De enige state die een webservice mag gebruiken is state uit een database of gedeeld bestandssysteem. 2.13 Versioneren 2.13.1 Applicaties ID Eis VA01 Applicaties worden geversioneerd conform de standaard beschreven in paragraaf 4.3.1.1. 2.13.2 ESB resources Er kunnen één of meerdere actieve productie versies van een koppeling zijn. Hierdoor kunnen afnemers van een koppeling in eigen tempo en gecontroleerd overgaan naar een nieuwe versie. Er wordt geen maximum gesteld aan het aantal actieve versies van een koppeling. Dit aantal dient tot een minimum beperkt te worden. Dit wordt gedaan door een maximum periode te hanteren dat een oude koppelvlak ondersteund wordt na het beschikbaar komen van een nieuwe versie (standaard 1 jaar). Daarnaast worden wijzigingen waar mogelijk als non breaking wijziging doorgevoerd. Het versioneren van koppelingen en de hiervoor benodigde ESB resources vereist specifieke aandacht, om het mogelijk te maken om meerdere actieve versies van een koppeling naast elkaar te draaien. De volgende regels gelden hierbij. 2.13.2.1 Major en minor versie ID Eis MM01 Er wordt bij de ESB onderscheid gemaakt tussen de koppeling zelf (proxy) en de ondersteunende ESB resources. Een koppeling is het koppelvlak en ondersteunende ESB resources zijn (herbruikbare) functionaliteiten die door verschillende koppelingen gebruikt kunnen worden, zoals de generieke foutafhandeling sequence. MM02 Ook bij herbruikbare ESB resources, zoals de generieke foutafhandeling sequence, moet het mogelijk zijn om een nieuwe versie in gebruik te nemen zonder dat alle afhankelijk koppelingen van de voorgaande versie in één keer over moeten. Deze koppelingen kunnen door het versioneren gecontroleerd en in eigen tempo over. Ook hier geldt dat de oude versie voor een beperkt periode ondersteund wordt (standaard 1 jaar). MM03 Bij applicatiebeheer afspraken dient rekening gehouden te worden met aanpassingen door nieuwe releases van een koppelvlak en herbruikbare ESB resources. MM04 ESB resources worden geversioneerd op major en minor versie. Dit geldt in ieder geval voor de volgende resources: Proxies Pagina 16 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 Sequences Endpoints Custom mediators Resources in de GR zoals: MM05 o XSD o WSDL o XSLT o Configuratieparameters o Configuratiebestanden De identificerende naamgeving van ESB resources moeten een versieaanduiding bevatten om onderscheid te kunnen maken tussen versies. Deze ESB resources worden geversioneerd op bestandsnaam, bijvoorbeeld “VoorbeeldProxy-v1_4.xml”. Hierdoor is het mogelijk om versies waarvan de major- en/of minornummer verschillen gelijktijdig te draaien en testen. Het is niet wenselijk om versies, waarvan alleen het patchnummer verschilt, naast elkaar te kunnen testen. Het gaat in dit laatste geval namelijk om een actieve versie waarop een patch is doorgevoerd. In onderstaand voorbeeld maakt een proxy gebruik van een ondersteunende ESB resource (foutafhandeling sequence). <proxy xmlns="http://ws.apache.org/ns/synapse" name="BagProxy-v1_1" transports="https,http" serviceGroup="nl.ienm.ca" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> … <sequence key="FoutAfhandelingSeq-v2_1"/> … Voorbeeld 1. Proxy 2.13.3 GR resources ID Eis VG01 Resources in de GR worden van major en minor versie voorzien in de bestandsnaam. In onderstaand voorbeeld is de versie af te leiden uit de bestandsnaam: _system/governance/VoorbeeldApplicatie/xsd/Voorbeeld-v1_0.xsd VG02 De resources die tot dezelfde koppeling behoren worden gegroepeerd door deze in een aparte folder te zetten. Bijvoorbeeld: _system/governance/VoorbeeldApplicatie/v1_0/xsd/Voorbeeld-v1_0.xsd Pagina 17 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 2.13.4 Koppelvlak ID Eis VK01 Naast het versioneren van de resources, WSDL en XSD, dient ook het koppelvlak zelf van een versie voorzien te zijn. 2.13.4.1 Namespace ID Eis VN01 Koppelvlakken worden geversioneerd door een versienummer toe te voegen aan de namespace. De service zelf (WSDL) en de berichtstructuur (XSD) worden voorzien van een namespace waarin enkel de major versie is opgenomen. Bijvoorbeeld: “nl.minienm.example.v1”. 2.13.4.2 URL’s Uniform Resource Locators (URL’s), bij koppelingen ook wel aangeduid als een Endpoint (EP), zijn een belangrijk onderdeel bij het versioneren van een applicatie of een koppeling. Dit geldt zowel voor webapplicaties als ook voor koppelingen die een koppelvlak op een URL beschikbaar stellen. ID Eis VN02 Koppelvlakken worden geversioneerd door een versienummer toe te voegen aan de namespace. De service zelf (WSDL) en de berichtstructuur (XSD) worden voorzien van een namespace waarin enkel de major versie is opgenomen. Bijvoorbeeld: “nl.minienm.example.v1”. VN03 URL’s van webservices voldoen aan de standaard zoals beschreven in paragraaf 5.3 Endpoints in het document IMEA – Katern – Service Gerichte Architectuur voor koppelingen. VN04 Bij applicaties kunnen maximaal twee versies van een applicatie gelijktijdig in een omgeving in gebruik zijn: de actieve versie en de nieuwe versie. Om dit mogelijk te maken worden er eisen gesteld aan het versioneren van de URL’s. Er zijn standaard URL’s zonder versienummers die naar deze twee versies wijzen. Dit wordt geregeld met behulp van een reverse proxy. Dit wordt bij het automatisch uitrollen ingesteld. Op productie is maar één standaard URL beschikbaar en deze wijst naar de actieve versie. Dit betekent dat op alle omgevingen behalve PRD getest worden door naar een specifieke URL te navigeren. 2.13.4.3 Koppelvlak versie ID Eis VK01 Bij koppelingen is er sprake is van een major versie indien er sprake is van niet backward compatible (breaking) wijzigingen in het koppelvlak. Een koppelvlak wordt alleen op major versie geversioneerd. De minor versie wordt opgenomen in het bericht zelf. Pagina 18 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 2.13.5 Proxy services ID Eis VP01 Het moet mogelijk zijn om meerdere versies van proxy services gelijktijdig te testen. Proxy service URL’s zijn daarom geversioneerd op major en minor versienummer. 2.13.6 Webapplicaties ID Eis VW01 Webapplicaties hebben als context root de naam van het software artefact, bijvoorbeeld erru-1.0.0. Webapplicaties worden uitgerold op basis van een software artefact waar de major, minor en patch versie in de applicatienaam is opgenomen. Hierdoor draait de webapplicatie onder de context root waarin het versienummer is opgenomen. De erru-1.2.3.war zal bijvoorbeeld beschikbaar zijn op http://host:port/erru-1.2.3/. Middels een reverse proxy wordt de actuele versie van de applicatie beschikbaar gesteld, in dit geval: http://erru.host en de nieuwe release als http://erru-new.host. 2.14 Omgevingsspecifieke configuratiebestanden ID Eis OC01 De omgevingsspecifieke configuratie staat in aparte configuratiebestanden. Deze worden in de GR gezet. OC02 Het Standaard Platform biedt een standaard API (ConfigLoader) waarmee de omgevingsspecifieke configuratiebestanden ingelezen kunnen worden. Deze API zorgt ervoor, transparant voor de applicatie, dat de juiste omgevingsspecifieke configuratie wordt ingelezen afhankelijk van de omgeving (ACC, PRE, PRD). Applicaties maken gebruik van ConfigLoader om de omgevingsspecifieke instellingen op te vragen/ OC03 Een template configuratiebestand wordt bij oplevering van een applicatie meegeleverd voor zowel de vertrouwelijke als niet vertrouwelijke omgevingsspecifieke configuratie instellingen. TB en FB gebruiken deze template om de omgevingsspecifieke configuratiebestanden te maken. OC04 Indien het een aanlevering betreft van een bestaande applicatie dan dienen de wijzigingen ten opzichte van de bestaande omgevingsspecifieke configuratiebestanden aangegeven te worden. Op basis hiervan kunnen TB en FB de bestaande omgevingsspecifieke configuratiebestanden aanpassen. 2.15 Aanlever formaat van artefact(en) ID Eis AF01 De verschillende onderdelen van een applicatie worden als package aangeleverd (applicatie artefact). Dit package is een zipbestand met de verschillende applicatie onderdelen (software artefacten) en een metadatabestand (applicationdeployment-meta.xml). Dit metadatabestand identificeert de applicatie en geeft aan naar welke Standaard Platform componenten de verschillende applicatie Pagina 19 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 onderdelen uitgerold moeten worden. Het uitrolmechanisme bepaald tevens op basis van de informatie in het metadatabestand naar welke infrastructuur de applicatie onderdelen uitgerold moeten worden. AF02 De applicatie package is omgevingsonafhankelijk en wordt ‘as is’ en volledig geautomatiseerd naar de verschillende omgevingen uitgerold. De omgevingsspecifieke configuratie instellingen zorgen er voor dat de applicatie correct werkt op deze omgevingen. AF03 Het applicatie artefact wordt als zipbestand aangeleverd. In de hoofddirectory van het zipbestand staan de software artefacten waaruit de applicatie artefact bestaat en een application-deployment-meta.xml. Het metadatabestand voldoet aan de in bijlage 2 beschreven XSD. AF04 De source code en geautomatiseerde tests worden als aparte QA zip bestand meegeleverd in de applicatie package. 2.16 Uitrollen De GR biedt functionaliteit om applicaties automatisch uit te rollen. Met deze functionaliteit kan een applicatie automatisch en gecontroleerd door de verschillende omgevingen van een OTAP straat worden uitgerold en teruggerold. Een applicatie doorloopt alle omgevingen en eindigt uiteindelijk in de PRD omgeving. Om een applicatie van de ene omgeving naar de andere omgeving door te zetten vindt een promote plaats. Het omgekeerde gebeurt door middel van een demote. ID Eis UR01 In de eigen omgeving maakt de leverancier gebruik van de beschikbaar gestelde VM images om aan te tonen dat de applicatie op het Standaard Platform draait en geautomatiseerd uitgerold kan worden. UR02 Bij het uitrollen dient in het bijzonder aandacht besteed te worden aan database wijzigingen. Het handmatig uitvoeren of terugdraaien van database wijzigingen is niet toegestaan. Pagina 20 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 3 Leveranciersomgeving Er worden een leveranciersomgeving beschikbaar gesteld aan softwareleveranciers. Deze leveranciersomgeving bestaat uit twee omgevingen die zijn ingericht conform het Standaard Platform. De leverancier gebruikt deze leveranciersomgeving om zelf te testen of een maatwerkapplicatie draait op het SP en automatisch uitgerold kan worden. Daarnaast wordt deze leveranciersomgeving gebruikt om een release van de applicatie geautomatiseerd op te leveren aan IenM. 3.1 Eisen Om de leveranciersomgeving te gebruiken dient de leverancier te beschikken over een eigen PKIoverheid certificaat. 3.2 PKIoverheid certificaat PKI certificaten worden gebruikt om te authentiseren en autoriseren. IenM stelt self signed certificaten beschikbaar om netwerkverkeer te beveiligen tussen de eigen omgeving van de leverancier en de leveranciersomgeving voor zowel applicatie- als berichtenverkeer. Daarnaast dient de leverancier over een eigen geldige PKIoverheid certificaat te beschikken voor communicatie tussen de leveranciersomgeving en het Centraal Aansluitpunt (CA). ID Eis PO01 Een leverancier dient over een eigen en geldig PKIoverheid certificaat te beschikken. PO02 IenM stelt een self signed certificaat beschikbaar aan de leverancier. De leverancier is verantwoordelijk om dit certificaat vertrouwelijk te behandelen. 3.3 Opzet De leveranciersomgeving bestaat uit twee omgevingen (TST en INT). Een leverancier maakt gebruik van deze omgevingen om aan te tonen dat de applicatie op het Standaard Platform draait en geautomatiseerd uitgerold kan worden. In de onderstaand figuur wordt het uitrolproces in de tijd weergegeven. Pagina 21 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 Figuur 1. Applicatie wordt automatisch uitgerold door de OTAP straat De getallen geven de volgorde van de stappen aan: De applicatie wordt toegevoegd aan de GR met behulp van de CLI. De applicatie wordt uitgerold naar TST. De applicatie wordt uitgerold naar INT. De applicatie wordt na de interne kwaliteitscontrole doorgezet naar IenM. De applicatie wordt in een staging locatie gezet en de verantwoordelijke functioneel beheerder wordt automatisch per email geïnformeerd. Als de documentatie volledig is en goedgekeurd wordt dan wordt de applicatie uitgerold naar ACC. Na acceptatie in ACC wordt de release doorgezet naar PRE waar een smoke test wordt uitgevoerd om te controleren of deze correct werkt. Na succesvol afronden van de smoke test in PRE wordt de applicatie uitgerold naar PRD. 3.4 Databases PostgreSQL wordt als database meegeleverd als onderdeel van de VM images. ID Eis DB01 Per omgeving is een databaseschema nodig. DB02 Er zijn per databaseschema twee database accounts nodig. Een account voor de applicatie met lees, schrijf en verwijder rechten (volledige DML2 rechten) op het databaseschema en een account voor het uitrollen met beheerdersrechten op het databaseschema (volledige DML en DDL3 rechten). 2. DML = Data Modification Language. 3. DDL = Data Definition Language. Pagina 22 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 DB03 Naamgeving van schema’s en database accounts voldoen aan de hieronder beschreven standaard. Omgeving 3.5 Databaseschema User BPO-V User uitrol (DML) (DML en DDL) ACC ACC_<APPL> ACC_<APPL>_APP ACC_<APPL>_UITROL INR PRE_<APPL> ACC_<APPL>_APP PRE_<APPL>_UITROL PRD PRD_<APPL> PRD_<APPL>_APP PRD_<APPL>_UITROL Ingebruikname Om de leveranciersomgeving in gebruik te nemen moet door de leverancier nog een laatste configuratie plaatsvinden. Deze configuratie bestaat uit o.a.: - het installeren van de leveranciers PKIoverheid certificaat - aanmaken van databases - aanmaken van JNDI databases - toevoegen van configuratiebestanden aan de GR Er is een apart document beschikbaar waar de ingebruikname is beschreven. 3.6 Command line client Het Standaard Platform stelt een Command Line Client (CLI) beschikbaar waarmee een applicatie aan de DeploymentWebservice aangeboden kan worden. De CLI maakt gebruik van tweezijdig SSL op basis van PKIoverheid certificaten voor authenticatie en autorisatie doeleinden. Deze client wordt gebruikt om de ontwikkel build pipeline aan de leveranciersomgeving te koppelen. Er is een apart document beschikbaar waarin het gebruik van de CLI is beschreven. 3.7 Black box Behalve de configuratie aanpassing uit de vorige paragraaf moeten de leveranciersomgevingen worden beschouwd en gebruikt als een black box. Problemen bij het gebruik of vragen over het gebruik dienen aan de beheerder van het Standaard Platform gericht te worden (zie volgende paragraaf). ID Eis BB01 Het inloggen via SSH op de leveranciersomgeving en het uitvoeren welke command line acties dan ook is niet toegestaan en is een teken dat de applicatie niet conform het Standaard Platform functioneert. BB02 De applicatie mag alleen via de command line client naar de leveranciersomgeving worden uitgerold. BB03 Uitrollen naar de verschillende omgevingen van de leveranciersomgeving wordt gedaan via de GR inclusief het doorzetten naar de staging omgeving bij IenM. BB04 Andere acties in de beheer consoles van de WSO2 producten of JBoss die de functionaliteit of dimensionering van het platform veranderen zijn niet toegestaan. Pagina 23 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 3.8 Ondersteuning IenM levert ondersteuning bij het gebruik van de leveranciersomgeving en ontwikkeling op basis van het Standaard Platform. Hiervoor dient contact opgenomen te worden met de beheerder van het Standaard Platform. Pagina 24 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 4 Bijlage 1 XSD’s 4.1 common.xsd Gedeeld schema, wordt door andere schema’s gebruikt en definieert de verschillende platform componenten waar naartoe uitgerold kan worden. 4.1.1 XSD <?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="ServerType"> <xs:restriction> <xs:enumeration value="wso2-esb"/> <xs:enumeration value="wso2-dss"/> <xs:enumeration value="wso2-bam"/> <xs:enumeration value="jboss-app"/> </xs:restriction> </xs:simpleType> </xs:schema> 4.1.2 XML voorbeeld Niet van toepassing. Zie overige XML voorbeelden. Pagina 25 van 26 Definitief | Standaard Platform - Aansluitvoorwaarden Applicaties en Componenten | Versie 1.0 4.2 application-deployment-meta.xsd Schema voor de application-deployment-meta.xml bestanden die in de root van het application artefact zip bestand aanwezig moeten zijn. Koppelt software artefacten aan logische middleware componenten. 4.2.1 XSD <?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:include schemaLocation="common.xsd" /> <xs:element name="application" type="applicationType"/> <xs:complexType name="artifactType"> <xs:sequence> <xs:element name="name"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value=".*-[0-9]\.[0-9]\.[0-9]\..+"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="target" type="ServerType"/> </xs:sequence> </xs:complexType> <xs:complexType name="applicationType"> <xs:sequence> <xs:element type="xs:string" name="name"/> <xs:element type="artifactType" name="artifact" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:schema> 4.2.2 XML voorbeeld <?xml version='1.0'?> <application> <name>ERRU Application</name> <artifact> <name>erru_application-1.1.0.war</name> <target>jboss-application-server</target> </artifact> <artifact> <name>erru_proxies-1.1.0.car</name> <target>wso2-esb-server</target> </artifact> </application> Pagina 26 van 26
© Copyright 2024 ExpyDoc