<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GLU Integration Project Methodology &#8211; GLU Global</title>
	<atom:link href="https://glu.global/article-categories/methodology/feed/" rel="self" type="application/rss+xml" />
	<link>https://glu.global</link>
	<description>Innovation at Speed</description>
	<lastBuildDate>Thu, 25 Apr 2024 11:25:52 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://glu.global/wp-content/uploads/2022/01/cropped-favicon-1-32x32.png</url>
	<title>GLU Integration Project Methodology &#8211; GLU Global</title>
	<link>https://glu.global</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Testing End Points</title>
		<link>https://glu.global/glu-guide/test-end-points/</link>
		
		<dc:creator><![CDATA[Richard Price]]></dc:creator>
		<pubDate>Thu, 02 Feb 2023 12:45:33 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4450</guid>

					<description><![CDATA[Approach to testing end points To confirm if an API End Point available and suitable for the integration scenario you are working with, you should follow these steps: Commands to use to test End Points The following table defines the commands in Linux which can be used to check connectivity for each of the types [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="has-medium-font-size wp-block-heading"><strong>Approach to testing end points</strong></h1>



<p><br>To confirm if an API End Point available and suitable for the integration scenario you are working with, you should follow these steps:<br><br></p>



<ol class="wp-block-list">
<li>Familiarize yourself with the API&#8217;s specifications and requirements.</li>



<li>Define test cases and test data that covers a range of scenarios for the API, such as error handling, edge cases, and normal use cases.</li>



<li>Use a testing tool or programmatically send requests to the API and check the responses against the expected results.</li>



<li>Monitor the API&#8217;s performance, such as response times and error rates, to ensure that it meets the required standards.</li>



<li>Repeat the testing process in different environments and at different loads to ensure the API&#8217;s stability and scalability.</li>



<li>Address any issues or bugs  found in the testing process with the API provider and repeat the testing process until the API is confirmed fit for purpose.</li>



<li>Document the testing process and results for future reference and maintenance.</li>
</ol>



<h1 class="has-medium-font-size wp-block-heading"><strong>Commands to use to test End Points</strong></h1>



<p>The following table defines the commands in Linux which can be used to check connectivity for each of the types of end points.<br><br></p>



<figure class="wp-block-table"><table><tbody><tr><th>Type</th><th>Method and Commands</th></tr><tr><td>REST</td><td>Example tools : Linux command prompt, Postman and HTTPie<br><br>Linux -&gt;  <code>curl -X&nbsp;GET&nbsp;https://api.example.com/endpoint</code><br><br>Postman: a graphical tool for sending and visualizing HTTP requests.<br><br>HTTPie: a command line tool for sending HTTP requests, with an emphasis on usability.<br><br>The specific command used will depend on the tool being used, the type of request being sent (e.g. GET, POST, PUT, DELETE), and the parameters being passed to the endpoint.</td></tr><tr><td>DATABASE</td><td>The specific command to test a database connection depends on the programming language and database management system being used. Some common ways to test a database connection include:<br><br>1. Using the <code>ping</code> command in SQL*Plus for Oracle databases<br>2. Using the <code>mysqladmin ping</code> command for MySQL databases<br>3. Using the <code>sqlcmd -Q "select 1"</code> command for Microsoft SQL Server databases<br>4. Using the <code>psql -c "select 1"</code> command for PostgreSQL databases<br>5. Using nc -zv glufts.cot7XXXXX.us-east-1.rds.amazonaws.com 3306<br><br>In general, the command should establish a connection to the database, send a simple query (such as <code>SELECT 1</code>), and confirm that the query returns a result, indicating that the connection is successful.</td></tr><tr><td>SOAP</td><td>To test a connection to a SOAP interface, you can use tools such as SoapUI, which allows you to create and execute SOAP requests, as well as view and analyze the response from the SOAP service. You can create a SOAP request with the desired parameters, send it to the endpoint, and verify the response to ensure that it is correct.<br><br>Examples of how to test a SOAP interface with SoapUI include:<br><br>1. Creating a new SOAP project: This involves providing the WSDL (Web Services  Description Language) URL of the SOAP interface and importing it into SoapUI.<br>2. Creating a SOAP request: This involves selecting the desired operation from the imported WSDL and creating a request with the required parameters.<br>3. Sending the SOAP request: This involves executing the SOAP request and viewing the response from the SOAP service.<br>4. Verifying the response: This involves comparing the response from the SOAP service with the expected response and checking for any errors or unexpected results.<br><br>Examples of how a SOAP interface could fail include:<br><br>1. Incorrect endpoint URL: If the URL provided in the SOAP request is incorrect, the connection will fail, and a response indicating an error will be returned.<br>Incorrect parameters: If the parameters provided in the SOAP request are incorrect, the connection will fail, and a response indicating an error will be returned.<br>2. Incorrect security configuration: If the security configuration required by the SOAP service is incorrect, the connection will fail, and a response indicating an error will be returned.<br>3. Unavailable service: If the SOAP service is unavailable, the connection will fail, and a response indicating an error will be returned.</td></tr><tr><td>ACTIVE_M_QUEUE</td><td>To test a connection to an ActiveMQ interface, you can use a variety of tools and techniques depending on the specific use case. Some common methods include:<br><br>1. Telnet &#8211; You can use telnet to connect to the ActiveMQ interface and send messages to a queue or topic. This will allow you to confirm that the connection is established and that messages are being sent and received.<br>2. JMS Client &#8211; You can use a Java Message Service (JMS) client to connect to the ActiveMQ interface and send and receive messages. This will allow you to test the end-to-end functionality of the interface, including message delivery and receipt.<br>3. Web Console &#8211; ActiveMQ includes a web console that provides a graphical interface for managing and monitoring the interface. You can use the web console to send and receive messages, view message statistics, and monitor the performance of the interface.<br><br>Examples of how an ActiveMQ interface could fail include:<br><br>1. Network Issues &#8211; If there is a problem with the network connection, messages may not be delivered or received correctly.<br>2. Configuration Issues &#8211; If the ActiveMQ configuration is incorrect, the interface may not be able to connect or may not be functioning as expected.<br>3. Capacity Issues &#8211; If the ActiveMQ interface is overwhelmed with too many messages or too much traffic, it may become slow or unresponsive.<br>4. Resource Issues &#8211; If the underlying resources (such as memory or disk space) are exhausted, the interface may become slow or unresponsive.<br>5. Software Issues &#8211; If there is a bug or issue with the ActiveMQ software, the interface may become slow or unresponsive.</td></tr><tr><td>ISO8583</td><td>To test a connection to an ISO 8583 interface, you can use a variety of tools and techniques, depending on the specific implementation and requirements of the interface. Here are a few examples of how you could test a connection to an ISO 8583 interface:<br><br>1. Use a message simulator: A message simulator is a tool that allows you to send test messages to an ISO 8583 interface and receive the corresponding responses. This can help you confirm that the interface is working correctly and that the messages are being processed as expected.<br>2. Send sample messages: You can send sample messages to the interface using a variety of techniques, such as a command line tool or a custom application. This can help you validate that the interface is working correctly and that the messages are being processed as expected.<br>3. Verify the response codes: You can verify the response codes that are returned by the interface after each message is sent. This can help you confirm that the interface is working correctly and that the messages are being processed as expected.<br><br>Testing a connection to an ISO8583 interface requires careful attention to the standardized message format, message structure, bitmap fields, message processing rules, and network communication. The list below provides the areas which will need special consideration.<br><br>1. Message format: ISO8583 is a standardized message format for financial transactions, which means that the message format must be followed precisely in order to communicate successfully with the interface. This requires careful testing to ensure that messages are being formatted correctly.<br>2. Message structure: ISO8583 messages have a specific structure, with specific fields for different types of information such as account numbers, amounts, and transaction codes. This structure must be carefully tested to ensure that messages are being sent and received correctly.<br>3. Bitmap fields: ISO8583 uses bitmap fields to indicate which data elements are included in a message. This requires testing to ensure that the correct bitmap fields are being set for each message.<br>4. Message processing: ISO8583 messages may require specific processing rules to be followed, such as verifying the validity of the card number or checking the amount of the transaction against available funds. These processing rules must be tested to ensure that they are being followed correctly.<br>5. Network communication: ISO8583 uses a binary message format, which requires careful testing to ensure that messages are being transmitted and received correctly over the network.</td></tr><tr><td>RABBIT_QUEUE</td><td>To test a connection to a RabbitMQ interface, you would need to perform several steps:<br><br>1. Connect to the RabbitMQ server: You would need to establish a connection to the RabbitMQ server using a suitable client library, such as the RabbitMQ Java client, the Pika client for Python, or the official RabbitMQ client for your language of choice.<br>2. Verify the existence of the queue: You can use the client library to verify that the queue you are trying to connect to exists and is accessible.<br>3. Publish a message to the queue: You can use the client library to publish a test message to the queue and verify that it is successfully delivered and can be retrieved by a consumer.<br>4. Consume a message from the queue: You can use the client library to create a consumer that retrieves messages from the queue and verify that the message you previously published can be retrieved.<br><br>A RabbitMQ interface could fail due to a number of reasons, including:<br><br>1. Network issues: The RabbitMQ server may be down or there may be a network issue that is preventing the client from connecting to the server.<br>2. Authorization issues: The client may not have the necessary permissions to access the queue.<br>3. Configuration issues: The RabbitMQ server may be configured incorrectly, preventing the client from connecting.<br>4. Resource depletion: The RabbitMQ server may be running out of resources, such as memory or disk space, leading to performance issues or failure.<br>5. Application bugs: The client or the server may contain bugs that prevent the connection from working correctly.</td></tr></tbody></table></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Configuring Stubs and Mock Services</title>
		<link>https://glu.global/glu-guide/configuring-stubs-and-mock-services/</link>
		
		<dc:creator><![CDATA[Rahim Ghezali]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 08:55:04 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4268</guid>

					<description><![CDATA[With GLU.Ware you can configure your own ‘mocks&#8217; and &#8216;stubs’ &#8211; a fundamental to delivering fully simulated and tested APIs. Mocking and/or stubbing is essential in scenarios where you are faced with external dependencies which may hinder the completion of your test/delivery cycle. The purpose of both is to eliminate testing all the dependencies of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>With GLU.Ware you can configure your own ‘mocks&#8217; and &#8216;stubs’ &#8211; a fundamental to delivering fully simulated and tested APIs. Mocking and/or stubbing is essential in scenarios where you are faced with external dependencies which may hinder the completion of your test/delivery cycle. The purpose of both is to eliminate testing all the dependencies of a class or function so your tests are more focused and simpler in what they are trying to prove.</p>



<p></p>



<p>A stub is an interface that simulates the actual object and returns pre-defined and expected Responses irrespective of input.</p>



<p></p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="1000" height="593" src="https://glu.global/wp-content/uploads/2023/02/image-189.png" alt="" class="wp-image-5669" srcset="https://glu.global/wp-content/uploads/2023/02/image-189.png 1000w, https://glu.global/wp-content/uploads/2023/02/image-189-300x178.png 300w, https://glu.global/wp-content/uploads/2023/02/image-189-768x455.png 768w, https://glu.global/wp-content/uploads/2023/02/image-189-50x30.png 50w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure></div>


<p></p>



<p></p>



<p>A mock is an interface with a bit more &#8216;intelligence&#8217; in that you can configure you mock services to return results based on what you send.</p>



<p></p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="1000" height="584" src="https://glu.global/wp-content/uploads/2023/02/image-190.png" alt="" class="wp-image-5670" srcset="https://glu.global/wp-content/uploads/2023/02/image-190.png 1000w, https://glu.global/wp-content/uploads/2023/02/image-190-300x175.png 300w, https://glu.global/wp-content/uploads/2023/02/image-190-768x449.png 768w, https://glu.global/wp-content/uploads/2023/02/image-190-50x29.png 50w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure></div>


<p></p>



<p><strong>Benefits</strong></p>



<ul class="wp-block-list">
<li>Speedy delivery</li>



<li>Focused and reliable testing</li>



<li>The ability o test components accurately in particular contexts</li>



<li>Obtain feedback quickly from a manual or automated test</li>
</ul>



<p></p>



<p><strong>When to use a stubs &amp; mocks?</strong></p>



<p>If we are developing the back end of a minor application with a third-party to interact with an API, we can implement an interface that can disconnect us from the third-party library. Eventually, that interface will act as a stub and yield hard-coded values. Conclusively, we can use values in unit tests.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Project Initiation and Execution Guide</title>
		<link>https://glu.global/glu-guide/project-initiation-and-execution-guide/</link>
		
		<dc:creator><![CDATA[Owen Meredith]]></dc:creator>
		<pubDate>Thu, 19 Jan 2023 15:47:26 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=2819</guid>

					<description><![CDATA[Integration Project Initiation When initiating any integration project the first step is to build a solid understanding of context and scope. The following steps provide guidance as to where to best focus your efforts. List the Integration Use Cases:&#160;(also referred to as Transactions) that are in scope e.g. Balance Enquiry, Withdrawal, Airtime Purchase etc. This [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-medium-font-size"><strong><span id="Integration_Project_Initiation" class="mw-headline">Integration Project Initiation</span></strong></h1>



<p>When initiating any integration project the first step is to build a solid understanding of context and scope. The following steps provide guidance as to where to best focus your efforts.</p>



<p><br><strong>List the Integration Use Cases:</strong>&nbsp;(also referred to as Transactions) that are in scope e.g. Balance Enquiry, Withdrawal, Airtime Purchase etc. This can take the form of a simple descriptive list.</p>



<p><br><strong>List the End Points:</strong>&nbsp;(these are the business systems involved in all in scope transactions) and identify which are Initiating Systems (e.g. Web Channel / ATM System / Back Office UI etc.), Receiving Systems (e.g. Core Bank System / ERP / Database / Message Queue / Airtime Platform etc.). Some End Points and be involved in certain transactions as Initiating Systems, and in others as Receiving Systems.</p>



<p>For each End Point gather information relevant to your integration &#8211; the system type (e.g. Oracle DB / Rabbit Message Queue), if an API is available the Protocol (e.g. REST / SOAP / TCP / ISO8583 etc. DB Connector or ISO), the system Name and Version, the API Version etc. </p>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><img decoding="async" width="781" height="998" src="https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Context.png" alt="" class="wp-image-3621" style="width:516px;height:660px" srcset="https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Context.png 781w, https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Context-235x300.png 235w, https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Context-768x981.png 768w, https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Context-39x50.png 39w" sizes="(max-width: 781px) 100vw, 781px" /></figure></div>


<p><br><strong>Create an Integration Context Diagram:</strong> This graphical representation provides an efficient means of building a quick understanding of End Points involved, how they inter-connect, where they are located and so on. Start simple and elaborate as you gather information about the Integration project you&#8217;re working on. You can also start to identify the specific GLU.Engines need, since GLU.Engines can be connected to each other, it often makes sense to have more fine-grained GLU.Engines so they can be updated and evolved independently to minimise downtime in event of any changes being needed. GLU.Engines can also be monolithic, servicing connections to multiple Endpoints. See the example adjacent. </p>



<p><br><strong>Create Sequence Diagrams:</strong> To align the understanding of the Use Cases, we recommending documenting them as UML Sequence Diagrams (you can use tools such as MS Visio or Draw.io). Typically to start you can focus on just the &#8216;positive&#8217; or &#8216;happy day&#8217; scenarios &#8211; see simple example below. Later, one should elaborate these to include the &#8216;failure&#8217; scenarios. You might be able to source existing sequence diagrams if such exist. Whiteboard sessions are a good way to talk through the flows of each transaction.</p>



<p></p>



<p></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="896" height="511" src="https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Seq_Diag.png" alt="" class="wp-image-3630" srcset="https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Seq_Diag.png 896w, https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Seq_Diag-300x171.png 300w, https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Seq_Diag-768x438.png 768w, https://glu.global/wp-content/uploads/2023/01/GLU_Guide_Seq_Diag-50x29.png 50w" sizes="auto, (max-width: 896px) 100vw, 896px" /></figure>



<p><br><strong>Gather End Point Connection and API Specification Documents:</strong>&nbsp;Based on the list of End Points, collect all available API Specifications. Note that API Specs are notoriously inaccurate so some digging may be needed, always ask if the version you find is the latest (check the change control in the doc to see when it was last updated &#8211; docs that have not changed in 12 to 18 months or more are may well be outdated). If you have any SOAP API End Points in your scope, get hold of the associated WSDL files.</p>



<p><br><strong>Gather End Point Connection and API Authentication and Authorisation details:</strong>&nbsp;Based on the list of End Points, document the authentication  and authorisation details, SSL certificates, encryption methods used etc. Typically different credentials will be required for Test vs. Production and it may be that Production credentials may only be shared when required. </p>



<p><br><strong>Gather Host Details:</strong>&nbsp;The Host URL or IP Address and Port details for each End Point for Testing and any subsequent stages in your Integration Lifecycle are needed.</p>



<p><br><strong>Establish Test End Point access:</strong> This enables you to directly send test messages at the Test End Points and in-so-doing to gain a first hand understanding of each API. This step can take time as security sensitivities may necessitate VPNs to be put in place or special access controls to be used. This access is critical to the Integration Lifecycle so needs to be established as soon as possible. Utilise tools such as Postman to perform this step, moving from testing directly in Postman to creating a cURL command from Postman and applying this from the server which the GLU.Engine will be run from (by doing this you will test the network and port configuration too). Please refer to <a href="https://glu.global/glu-guide/test-end-points/" data-type="ht_kb" data-id="4450" target="_blank" rel="noreferrer noopener">Test End Points</a> for details on approach and tools. </p>



<p><br><strong>Gather any existing Test Cases or Test Packs:</strong>&nbsp;These can be useful as they may highlight some of the failure scenarios that have been already identified. If automated test pack collections such as one might use with tools such as Postman or SOAP UI are available, these will help with your own test pack creation. GLU&#8217;s preferred test tool is Postman. Sometimes incumbent IT teams, suppliers or partners will have a Quality Assurance or Test Team or person. Identify who these people are and ask them for any existing Test Cases they may have. Use any available existing test cases to start to build up the test pack for your integration use case covering both positive and negative scenarios.</p>



<p><br><strong>Gather End Point Sample Request/Response messages:</strong>&nbsp;Since APIs are often inaccurate, the fastest way to understand how an API behaves is to get working sample messages for each step of each in scope Use Case. This can sometimes be challenging but is worth the effort, some approaches to consider: If systems you are integrating to already exist, typically someone would have tested them, if so they may be able to provide such samples, leverage any inputs you might have gathered from your efforts to gather existing Test Packs. If you have established Test End Point access (see above) that often will give you the best mechanism of generating these sample messages. Detailed System Logs will often also trap the inbound / outbound message payloads. These are often considered &#8216;sensitive&#8217; so may require obfuscation of sensitive data they may contain. This approach can also get complicated as logs from each End Point would be needed creating a potentially heavy workload to process them all. Regardless of how you gather your sample messages, having them will help to accelerate you integration configuration. </p>



<p><br><strong>Provision VMs for GLU.Engines:</strong>&nbsp;for each stage of the Integration Lifecycle. See the <a href="https://glu.global/glu-guide/glu-engine-server-specifications/" target="_blank" rel="noreferrer noopener">GLU.Engine Server recommended specifications</a>.</p>



<p><br><strong>Define the GLU Logfile Requirements:</strong> Not always critical for initial PoC&#8217;s but almost always essential as a pre-requisite for integrations prior to &#8216;go live&#8217;. See the <a href="https://glu.global/glu-guide/glu-engine-logs/">GLU Logfile</a> page as a start but define any Client specific dashboards as needed.</p>



<p><br><strong>Define GLU System Metrics Dashboard Requirements:</strong> Clients should use their existing Metric Analytics and Dashboard tools to monitor their GLU.Engines. The full spectrum of JMX Metric&#8217;s is available to be consumed by any compatible Monitoring tool. Click here for more on the JMX Metrics. </p>



<h1 class="wp-block-heading has-medium-font-size"><strong><span id="Useful_Tools" class="mw-headline">Useful Tools</span></strong></h1>



<p>This Template provides a succinct basis against which an Integration Project can be executed &#8230; <a href="https://glu.global/wp-content/uploads/2023/01/GLU_Project_Definition_Document_-_Template_-_v1.0.pdf" target="_blank" rel="noreferrer noopener">GLU &#8211; Project Definition Document &#8211; Template &#8211; v1.0 </a></p>



<p>There are a number of tools that one can use for various purposes to assist with streamlining integration projects. Below are a few such tools that the GLU team often use. It is important to understand the context of any integration, to do so, drawing tools such as below can be used to build up Context Diagrams that show the initiating system/s and the various receiving systems involved in your integration project. Try to capture as much detail as possible in this visual artefacts.</p>



<ul class="wp-block-list">
<li><a href="https://app.diagrams.net/" target="_blank" rel="noreferrer noopener">https://app.diagrams.net/</a> &#8211; for building up Context Diagrams &#8211; a free and very powerful alternative to Microsoft Visio</li>



<li><a href="https://mermaid-js.github.io/mermaid-live-editor/" target="_blank" rel="noreferrer noopener">https://mermaid-js.github.io/mermaid-live-editor/</a>&nbsp;&#8211; a free and powerful tool to assemble Sequence Diagrams</li>
</ul>



<p>In order to Test your GLU.Engines you need the ability to send messages and see responses. We use Postman widely for this purpose. Additionally you&#8217;ll need to interrogate the GLU.Engine logs, this can be done directly or using a lookset like the Elastic Stack.</p>



<ul class="wp-block-list">
<li><a href="https://www.postman.com/" target="_blank" rel="noreferrer noopener">https://www.postman.com/</a> &#8211; For Testing your GLU.Engines</li>



<li><a href="https://www.elastic.co/elastic-stack" target="_blank" rel="noreferrer noopener">https://www.elastic.co/elastic-stack</a> &#8211; for Log Analytics &#8211; Elasticsearch, Kibana, Beats, and Logstash (also known as the ELK Stack), allows one to search, analyze, and visualize GLU.Engine logs it in real time.</li>



<li><a href="https://hawt.io/" target="_blank" rel="noreferrer noopener">https://hawt.io/</a>&nbsp;&#8211; a free tool to visualise your GLU.Engine JMX Metrics</li>
</ul>



<p>Other tools that may be of use:</p>



<ul class="wp-block-list">
<li><a href="https://www.docker.com/" target="_blank" rel="noreferrer noopener">https://www.docker.com/</a>&nbsp;&#8211; If your are using Docker Containers to run you GLU.Engines</li>
</ul>



<h1 class="wp-block-heading has-medium-font-size"><strong><span id="The_Integration_Lifecycle" class="mw-headline">The Integration Lifecycle</span></strong></h1>



<p>The Integration Lifecycle for your project may vary from that outlined below depending on specific constraints you may encounter in your project. Use this as a guide.</p>



<p><br><strong>Probe Test Phase:</strong> <br>Once you have access to the Test End Points, you can commence probe testing each End Point. This provides you with an understanding of how the actual End Points behave. Tests you fire (e.g. from Postman) may be based on existing test cases you&#8217;ve managed to source, or from test cases you have created in your test tool (Postman) based on your understanding of the sample Request/Response messages you&#8217;ve sourced (first prize!) or failing that based on just the API Specs.</p>



<p><strong>Lab Test Phase:</strong></p>



<ol class="wp-block-list">
<li>Build Stubs: Based on your Probe Test results, using the sample Request/Response messages you are able to configure (or build) Stubs / Mock Services for each End Point. These could be stand-alone GLU.Engines that are provisioned to behave as Stubs / Mock services or they can be embedded within the integration GLU.Engine configuration. Initially just focus on the &#8216;happy day&#8217; Response scenarios to get those working, the &#8216;failure&#8217; scenarios can be added to your stubs and Lab Tests thereafter.</li>



<li>Build Test Packs: For each Use Case, build the test cases in your Test tool (e.g. Postman).</li>
</ol>



<p>Incrementally Configure and Build your GLU.Engine:</p>



<ol class="wp-block-list">
<li>Configuration: Break the configuration of each Use Case into logical segments and test each segment as you go.</li>



<li>Lab Tests: Build your Lab Test GLU.Engines for testing from the Test GLU VM or Server as you go. Depending on your security policies it is also possible build initial Lab Test GLU.Engines for &#8216;localhost&#8217; so you can download and test directly from your laptop or PC providing you have access from there to your Stubs. This may have security implications so should be pre-authorised by relevant parties.</li>



<li>Start combining working segments to build up the full Use Case.</li>



<li>Logfile Analytics: At this phase, one should also lab test the Logfile Analytics (if in scope).</li>



<li>Metrics Dashboard: At this phase, one should also lab test the Metrics Dashboard (if in scope).</li>
</ol>



<p><strong>I</strong><strong>ntegration Test Phase:</strong></p>



<p>Build a GLU.Engine for the System Integration Test (SIT) Environment. You&#8217;ll need the host details for all the Test End Points as well as for the VM you&#8217;ll be running your GLU.Engine from. Execute your Test Pack for all Use Cases starting with the &#8216;happy day&#8217; tests and then expanding into the &#8216;failure&#8217; scenario&#8217;s.</p>



<p><strong>UAT Phase:</strong></p>



<p>Optional, depends on Clients process.</p>



<p><b>Pre-Production Phase:</b></p>



<p>Optional, depends on Clients process.</p>



<p><b>Production:</b></p>



<p>The ultimate objective, your GLU.Engines will no longer be tagged as &#8216;SNAPSHOT&#8217;, they will be tagged as version specific &#8216;RELEASE&#8217;.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RESTful API Design-Driven Approach</title>
		<link>https://glu.global/glu-guide/restful-api-design-driven-approach/</link>
		
		<dc:creator><![CDATA[Owen Meredith]]></dc:creator>
		<pubDate>Thu, 19 Jan 2023 12:52:30 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=2786</guid>

					<description><![CDATA[There are many good online resources that you can refer to to help you understand the best practices in relation to API Design. Use this resource to help build up your foundational understanding of REST. Here is a particularly good article on RESTful API Design. Design easy-to-consume APIs A good API design makes the API easy to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>There are many good online resources that you can refer to to help you understand the best practices in relation to API Design. Use this resource to help build up your foundational understanding of <a rel="noreferrer noopener" href="https://restfulapi.net/" target="_blank">REST</a>. Here is a particularly good article on <a href="https://dzone.com/articles/restful-api-design-driven-approach" target="_blank" rel="noreferrer noopener" class="broken_link">RESTful API Design</a>.<br><br><strong>Design easy-to-consume APIs</strong></p>



<p>A good API design makes the API easy to consume by the app developer. Below are a set of design best practices that have enabled many API designers with SOAP design experience to build the right set of easy-to-consume RESTful APIs. Using a data-centric model APIs should focus on the underlying entities/resources they expose, rather than a set of functions that manipulate those entities. In other words, the URLs should have nouns, not verbs.<br><br></p>



<p>For example, a collection of cars could have a URL https://cartracker.com/cars. And, individual cars would each have a unique URL like http://cartracker.com/cars/9672376. With this approach, you can retrieve the details of the car using the GET method, delete the car using the DELETE method, and modify properties of the car using the PATCH or PUT methods.<br><br></p>



<p>By contrast, in a function-oriented API, there is much more variability, and much more detail a developer has to learn. And there is no clear structure or pattern you can use to help them with the next API.</p>



<h1 class="has-medium-font-size wp-block-heading"><strong>Building simple JSON</strong></h1>



<p>Due to its simplicity, JavaScript Object Notation (JSON) has become the de facto standard for web APIs. When JSON is used well, it is simple and intuitive. If your JSON doesn’t look as straightforward as the example below, you may be doing something wrong.</p>



<p><em>{</em></p>



<pre class="wp-block-preformatted"><em>“kind”: “Car”
“name”: “BMW”,
“Color”: “Silver”,
...
</em></pre>



<p><em>}</em></p>



<p>Your JSON API will be simpler and easier to understand if you stick to the principle that the names in your JSON are always property names, and the JSON objects always correspond to entities in your API’s data model.</p>



<h1 class="has-medium-font-size wp-block-heading"><strong>Expressing relationships as links</strong></h1>



<p>If your web APIs do not include links today, a first step is simply to add some links without making other changes, like this:<br><br></p>



<p><em>{ “id”: “12378”, “kind”: “Car” “type”: “BMW”, “Colour”: “Silver”, “ownerID”: “9876599”, “ownerLink”: “https://cartracker.com/persons/9876599” }</em><br><br></p>



<p>Using links makes it easier for app developers to consume resources, with less to learn and no need to hunt for documentation. Moreover, links can be plugged into templates to produce the right URL.</p>



<h1 class="has-medium-font-size wp-block-heading"><strong>Designing URLs</strong></h1>



<p>A good way to make APIs human-friendly involves the creation of entity URLs that have the entity type in them when fetching a specific resource. Thus, instead of https://cartracker.com/RTRX4545666, it is more desirable to have https://cartracker.com/cars/4545666.<br><br></p>



<p>Also, it is not recommended to code a hierarchy of entities into an URL. Hierarchies are not as stable as they might seem; encoding them in your URLs could prevent you from reorganizing your hierarchies in the future.<br><br></p>



<p>For query URLs, it is recommended to use the format:<br>https://cartracker.com/persons/{personId}/cars rather than <br>https://cartracker.com/search?type=Car&amp;owner={personId}<br><br></p>



<p>Many app developer prefer the first format because it is more readable, more intuitive, and easier for API developers to implement.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
