An Overview of Enterprise and IT Architecture 9.2 – Intro en Definities

Een TOGAF cursus op Pluralsight

https://www.pluralsight.com/courses/overview-enterprise-it-architecture-9-2

Best een leuke manier om wat meer richting Togaf certificering, want de TOGAF videos zijn zo “saai”!

 

Als er wijzigingen plaatsvinden, dan kan dat ook via de enterprise architectuur. De beschrijving in documenten om te komen van de huidige naar de doel architectuur.

Wat is een enterprise

Enterprise bestaat uit heel veel onderdelen: zoals technologie, mensen, partners, producten en kennis etc.

Enterprise assets zijn altijd in beweging en zorgt voor chaos en dat zorgt weer voor innovatie.

Allerlei verschillende uitspraken maar het komt er op neer dat het blueprints zijn van wat de architectuur moet zijn of moet worden.

 

 

 

 

C onderdelen zijn de capabilities

De 4 genoemde domeinen zijn belangrijk in het TOGAF EA framework!

Hoofdstuk 4 Introductie Architecture Development Method

Voorbeeld van GM was dat er een architect (Janet) ingehuurd die ervoor zorgde dat alle stakeholders ervan overtuigd waren dat een EA nodig  was.

 

Packtpub Phyton workshop

Om weer eens wat kennis op te doen, kijk ik naar de mogelijkheden die Packtpub nu biedt om een workshop te volgen. Hiermee ga je van de basis doorwerken naar een bepaald niveau en ik ben benieuwd wat dat niveau is.

Een heerlijk hapje om je in vast te bijten, want dit staat er op het menu:

 

 

 

Het begin

Om te beginnen, moest ik een installatie hebben van een onderdeel wat ik niet op de laptop wil hebben staan. Dit omdat ik er geen fan van ben om zomaar software te installeren en de ruimte in beslag nemen. Dit is de reden dat ik alles probeer te installeren op virtuele omgevingen. De zoektocht voor beste Linux Developer omgeving, leverde de Debian 10 als numero uno! Maar deze installatie kreeg ik niet afgerond. Na 2 pogingen leek het verstandig om naar nummer 2 over te stappen. Dit was Ubuntu 20.04 en de installatie ging zoals altijd vlekkeloos. Ik heb gekozen voor de minimale developer installatie omdat ik geen gebruik wil maken van games en openoffice en dat soort zaken.

Er moest een installatie van Jupyter uitgevoerd worden. Dus even gekeken naar wat Jupyter is:

is a nonprofit organization created to “develop open-source software, open-standards, and services for interactive computing across dozens of programming languages”. Spun off from IPython in 2014 by Fernando Pérez, Project Jupyter supports execution environments in several dozen languages. Project Jupyter’s name is a reference to the three core programming languages supported by Jupyter, which are Julia, Python and R, and also a homage to Galileo’s notebooks recording the discovery of the moons of Jupiter. Project Jupyter has developed and supported the interactive computing products Jupyter Notebook, JupyterHub, and JupyterLab, the next-generation version of Jupyter Notebook.

OK .. dat is wel een coole tool!! Dus deze moest gedownload worden: Anaconda Navigator 

Een download van 575 MB en moet nog even executable gemaakt worden na het downloaden. Als je dan de  installer start dan wordt Anaconda geinstaleerd.

Daarna stond er in de uitleg dat de Jupyter Notebook ogestart moest worden en dat was nog wel even wat uitzoeken. Zo kon ik niet het mooie scherm dat op de website stond ervoor krijgen:

Dit was omdat in de directory van anaconda\bin een heleboel zaken stonden en ik niet wist wat er moest worden opgestart. Dat was dus de navigator:

Hierdoor wordt de browser ogestart en krijg je het volgende scherm te zien:

Daarna kun je klikken op Launch Jupyter

Daarmee dacht ik dat ik klaar was om te beginnen, maar nadat ik een browser met wat folders en files zag verschijnen, las ik verder. Nu moet er een Python installatie gedaan worden.

Ga naar de Python website

Ik heb de 3.8.5 versie gedownload. Deze moest uitgepakt worden en daarna heb ik iets gedaan wat ik normaal gesproken nooit doe!! Ik heb de README.rst geopend 🙂

Daarin staat het volgende:

Build Instructions
On Linux:
./configure
make
make test
sudo make install

Dit zou Python als python3 moeten installeren.

arggh:

Laten we weer eens misbruik maken van Google:

zoeken op de term levert de volgende website op:

askubuntu

Raar dat dit niet automatisch is gedaan, maar na het volgende commando heb ik voor mijn zeurende Ubuntu omgeving blijkbaar wel een acceptabele C compiler:

sudo apt-get install build-essential

Nog maar een run op de ./configure

–> dat was succesvol. make ging ook vlekkeloos.

Maar toen make test:

Via google gevonden datzelfde probleem had

Dus ook de volgende 2 packages installeren:

  • sudo apt-get install zlib1g-dev
  • sudo apt-get install zlibc

Maar toen ik dit wilde doen, werd mijn scherm zwart. Het is ondertussen ook 02:30 AM, dus misschien moet ik even een slaappauze inlassen. Morgen weer een gewone werkdag 😉

Vandaag is 30-04-2021 :  blijkbaar heb ik dit een jaar geleden gestart. Want mijn signature was blijkbaar invalid geworden. Dit was blijkbaar een jaar geldig en dit is alweer voorbij gevlogen. Dacht  niet dat ik dit een jaar geleden al was begonnen, maar zo zie je maar weer dat de tijd voorbij vliegt.

Gelukkig kan ik gewoon verder met andere Packpub boeken of de zogenoemde Paths.

Blijkbaar was ik al begonnen met Getting Started with Python.

Bij de installatie wordt een voorbeeld gegeven dat een ander onderdeel: virtualenv ook moet worden geinstalleerd.

https://virtualenv.pypa.io/

Een voorbeeld dat gegeven wordt is dat je een website bouwt met Django 1.7 en als je hiermee klaar bent, wil je een andere website bouwen met Django 1.8. Of je moet op 1.7 blijven of je moet de installatie overschrijven met 1.8, maar beide naast elkaar draaien op je eigen omgeving werkt niet. Dus dat lost virtualenv blijkbaar op.

 

TOGAF 9.2 basis (oftwel Foundation of Level 1)

TOGAF Standaard:

 

verschillende terreinen toepasbaar op alle technologiën

veranderingen vooral in other guides:

 

 

 

Chapter 2 Basis Concepen

2.1 Leer punten

 

  • Wat is de TOGAF standaard?
  • Wat is een enterprise?
  • Wat is Enterprise Architecture?
  • Waarom heb ik een Enterprise Architecture nodig? Wat zijn de voordelen voor het bedrijf?
  • Wat is “architecture” in the context van de TOGAF standaard?
  • Wat is een architecture raamwerk?
  • Waarom heb ik een raamwerk nodig voor Enterprise Architecture?
  • Waarom is de TOGAF standaard werkbaar als raamwerk voor Enterprise Architecture?
  • Wat behelst de TOGAF standaard?
  • Wat zijn de verschillende type architecturen waar de TOGAF standaard mee werkt?
    • business, data, application en technology ???

2.2 Introductie van de  TOGAF 9 Standaard

2.2.1 Wat is de TOGAF standaard?

De TOGAF standard is een architectuur raamwerk. Het levert de methodes en middelen om te helpen in acceptatie, productie, gebruik en onderhoud van Enterprise Architecturen. Het is gebasseerd op een iteratief process model wat ondersteund wordt door best practices en een herbruikbare set van bestaande architecturele middelen (assets).

De TOGAF standaard is ontworpen en wordt onderhouden door De Open Group Architecture Forum. Eerste versie in 1995 was gabaseerd op the US Department of Defense Technical Architecture Framework for Information Management (TAFIM). De Open Group Architecture Forum heeft meerdere opvolgende versies ontwikkeld van de TOGAF standard op reguliere basis en elke gepubliceerd op de Open Group public website.

“Enterprise willekeurige collectie van een organisatie dat een gemeenschappelijke set van doelen heeft”

 

Het kan gebruikt worden voor het ontwikkelen van een uitgebreid aantal verschillende  Enterprise Architectures. Het is aanvullend, en kan gebruikt worden samen met, andere raamwerken dat meer de focus hebben op een specifieke oplevering voor bepaalde verticale sectoren, zoals Overheid, Telecommunicatie, Productie, Defensie en bijvoorbeeld Financiën. Een belangrijk onderdeel van de TOGAF standaard is de methode – de TOGAF Architecture Development Method (ADM) – voor het ontwikkelen van een Enterprise Architectuur dat de business benodigdheden adresseert.

2.2.2 Structuur van de TOGAF documentatie

 3 Core concepts

Belangrijke elementen:

  1. Wat zijn de ADM fase namen en het doel van elke fase?
  2. Wat zijn de op te leveren producten,

 

cursussen overflow

Voortgang

Dit hoofdstuk kan ik vrij kort houden. D’r is geen voortgang in mijn zelf ontwikkeling. Het was de bedoeling dat ik de tijd dat ik thuis zit, gewoon nuttige tijdverdrijf. Dat in de nabije toekomst ook nog eens deuren kan openen, voor de ontwikkeling in mijn carrière. Maar  zoals zo vaak: ik start iets en vergeet het dan weer totaal.

Drukte op het werk, zorgt ervoor dat ik de tijd achter de PC wel besteed aan de werk zaken. Echter was de bedoeling dat ik ook extra tijd zou spenderen om weer iets nieuws te leren. Gewoon een programmeertaal, om het weer eens op te frissen … of een architectencursus om een eventuele vervolgstap in mijn carrière te kunnen maken, nadat ik al meerdere jaren helemaal stil sta en het gevoel heb dat ik uit beeld verdwijn als zijnde een persoon met relevante kennis van zaken op mijn vakgebied (dat is specifiek Oracle integratie producten!). Tevens heb ik altijd al willen ontwerpen en games willen maken, vandaar dat ik nu ook kijk naar Blender 3D en Unity 3D cursussen. Heeft totaal niets met mijn vakgebied te maken, maar ik was ooit eens heel erg onder de indruk van een partij die een video had gemaakt over het effect van vertrouwen  in de collega’s.  Dat was het top-down model, met allemaal touwtjes en wat er gebeurde als een touwtje te hard werd aangetrokken of doorgeknipt. Was indrukwekkend om te zien en vanaf dat moment wilde ik ook zoiets kunnen maken. Gewoon als voorbeeld van ons eigen team. Denk dat het zo eenvoudig zichtbaar te maken is, waar de knelpunten echt liggen … aangezien woorden niet blijven hangen. Beelden zijn daar volgens mij veel beter in.

Nu echt

Laat ik het nu maar weer eens echt serieus oppakken. Ook op mijn eigen vakgebied. Er zijn gratis certificeringen te behalen, zelfs door Oracle waar ik al jaren mee werk. Als ik dat nou eens serieus wil oppakken, dan zie ik gewoon dat tijd hier weer eens de grootst vijand is: Om voor mij 3 relevante certificeringen te behalen, zou ik al een complete werkweek moeten opofferen en deze tijd heb ik gewoon niet. Dus ik moet dit overdag doen, wanneer het rustig op het werk is en mijn kinderen naar school. Binnenkort (8 juni) gaan de kinderen misschien weer volledig naar school, dus dan heb ik misschien nog een kans om het serieus te gaan oppakken. Voorlopig moet ik maar kijken wat ik in de tussentijd eventueel zou kunnen realiseren en beseffen dat het gewoon niet anders is.

PHP Post file_get_contents met body

Codeigniter

Codeigniter ben ik tegen gekomen op mijn werk, waarin we het inzetten om het werk van de consultants te vereenvoudigen. Niet, in de eerste plaats, omdat we lui zijn aangelegd, maar vooral om te voorkomen dat er toch kleine verschillen kruipen in de gezamelijke oplossingen die we bedenken.

De tooling is een framework gebouwd in PHP dat het Model View Controller principe hanteert. Hierdoor werd het vrij gemakkelijk om nieuwe functionaliteiten toe te voegen aan een php applicatie, die op bijna elke http server uitgevoerd kan worden.

curl

binnen onze oplossing werd het duidelijk dat er een middel nodig was om gegevens die ingevoerd werden, richting verschillende CI omgevingen te sturen. Hier gaat het specifiek om GitLab en om Jenkins. De uitleg wat we hier mee proberen te bereiken, is voor nu te vergaand. Daar kunnen we later misschien nog wel een keertje op terugkomen.

We konden gebruik maken van de redelijk bekende tool:

curl

Echter kwamen we erachter dat dit niet op alle servers standaard geinstalleerd was, dus we zochten naar alternatieven. Bleek later de gewone haal content functie van PHP dit ook te kunnen. Daarom zijn we overgestapt op de standaard van php:

file_get_contents

Wat hier echter een probleem opleverde was dat er binnen GitLab er alleen gebruik werd gemaakt van een zogenaamde query paramter string, zoals:

http://www.gitlabserver.nl/api/v4/projects?name=test&owner=doris

Dit werd echter anders met de call richting Jenkins, omdat daar ook echt een bestand of eigenlijk meer de inhoud van een bestand (job.xml) moest worden meegestuurd in de POST sessie.

Wat er hier anders aan was, dat er een 2de element aan het geheel moest worden meegestuurd, naast de parameters. Dit was de code voor het geheel werkte:

function call_rest_api($type_method, $header, $url, $data, $data_binary = NULL)
{
$postdata = http_build_query($data);

$packet['method'] = $type_method;
$packet['header'] = implode("\r\n", $header);
$packet['content'] = $postdata;
if ($data_binary) {
$packet['data-binary'] = "@".$data_binary;
}

$transmit_data = array('http' => $packet);

$context = stream_context_create($transmit_data);
$result = file_get_contents($url, false, $context);

return $result;
}

Dit zorgde ervoor dat de paramters vanuit $data als query werden opgezet met de ‘&’  ertussen, maar dit werd aan de content toegevoegd. Een test om te zien hoe het met binairy data ging, was lastig.

Postman had een mooie methode om nadat ik het geheel werkend had gekregen een middel om source code te laten zien. Echter niet met de file_get_contents en alleen met de curl en HTTP post acties. Maar dat liet wel een duidelijk beeld zien.

Middels Wireshark kwam ik erachter dat mijn data-binary helemaal niet over de lijn ging. De talloze voorbeelden op internet gingen allemaal over het feit dat dit als content of data in de array moest worden meegestuurd, maar dat wilde allemaal niet werken.

Wel kwam ik ergens een voorbeeld tegen, die de content met alleen data liet zien. Alle parameters zaten in de URL. Dus verder geen extra parameters en daarmee leek het anders wel te werken. Vandaar dat ik de parameters die allemaal in de var $postdata kwamen te zitten, heb verplaatst om direct in de URL te zetten en dit is de werkende code geworden:

function call_rest_api($type_method, $header, $url, $data, $data_binary = NULL)
  {
      $postdata = http_build_query($data);
      $url = $url.'?'.$postdata;
      log_message('debug','DEBUG postdata inhoud van de verschillende call_rest_api calls: '.$postdata);
      $packet['method'] = $type_method;
      $packet['header'] = implode("\r\n", $header);

      if ($data_binary) {
          $packet['content'] = $data_binary;
      }

      $transmit_data = array('http' => $packet);

      $context  = stream_context_create($transmit_data);
      $result = file_get_contents($url, false, $context);
      log_message('debug',$result);
      return $result;
  }

Dit is werkende code voor en GitLab en Jenkins!