<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7311542407095082399</id><updated>2021-11-28T15:02:40.209-08:00</updated><category term="Programming"/><category term="Microservices"/><category term="Cloud Computing"/><category term="IT Security"/><category term="Internet"/><category term="AWS"/><category term="Computing"/><category term="Video"/><category term="AI"/><category term="AR"/><category term="Blockchain"/><category term="Gadgets"/><category term="IoT"/><category term="ML"/><category term="Mobile"/><category term="Technology"/><category term="VR"/><category term="Quantum Computing"/><category term="SEO"/><category term="Web Hosting"/><category term="Web Services"/><title type='text'>Agnasarp</title><subtitle type='html'>Agnasarp is a technology-focused blog that has enough information about cutting-edge technologies that you can use for your problems. Stay with us to get more updates!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.agnasarp.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-3850013813991046557</id><published>2021-10-11T21:30:00.465-07:00</published><updated>2021-10-13T00:20:34.144-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Services"/><title type='text'>Creating a simple SOAP web service with Spring Boot</title><content type='html'>&lt;h2 style=&quot;text-align: left;&quot;&gt;Simple soap service with Spring Boot&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Hi guys! Today we will give another useful topic if you are really worried about web services or APIs (Application Programming Interface). Literally, a service delivered via the web will be treated as a web service. It is designed for machine-to-machine (application-to-application) communication over a network with interoperability. Among the two most popular web service groups, SOAP (Simple Object Access Protocol) is a kind of old-fashioned web service that is still used in application development contexts at the enterprise level. The transport mechanism of SOAP services is either HTTP or MQ but the format of the request and the response should be SOAP XML. These are the key things of SOAP services and now we will look at how we can implement simple SOAP services using the contract-first approach with Spring Boot. That is about a course management system.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjq3i45xe7Nc8hqWCjW8wMyidmOYWStjRjcGPf7jNLI7dvollBwYkYV-ofW8dYXVab-QKLt7_dUxaXnuCanLD3uz8VeR-L_EWI5Eb258enWkJo1D32YPXRSrvw_tn-PKm-x02uyQwExgcNFLu2b9_gtMmNEbBZV1Zjn-kB5nfqVyBIMzC59cEr1fsOC=s1000&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjq3i45xe7Nc8hqWCjW8wMyidmOYWStjRjcGPf7jNLI7dvollBwYkYV-ofW8dYXVab-QKLt7_dUxaXnuCanLD3uz8VeR-L_EWI5Eb258enWkJo1D32YPXRSrvw_tn-PKm-x02uyQwExgcNFLu2b9_gtMmNEbBZV1Zjn-kB5nfqVyBIMzC59cEr1fsOC=w640-h448&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;SOAP web services with Spring Boot&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;background: 0px 0px rgb(255, 255, 255); border: 0px; color: #1f2024; font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; margin: 0px 0px 15px; outline: 0px; padding: 0px; text-align: left; vertical-align: baseline;&quot;&gt;Initialize with spring initializr&lt;/h3&gt;&lt;div&gt;Let&#39;s take a look at the project initialization with&amp;nbsp;https://start.spring.io/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjHZ_tz8nrucXsjPx5B_il2y-7udONbK_oYrk7z9dYIMERzfYjZ_ShpKTqQddRhIT0FaGuUkPUWblEAhHKcgdfBaEO5P_vDvq9fqJe4LkgqXvefunzgAhwm-mnTawwcgLLGOGNcpFzu0kDj-3YLDtRIx3B21RNMzDf94efE5ktTT23HXXODCESMsqj=s1511&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;743&quot; data-original-width=&quot;1511&quot; height=&quot;314&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgjHZ_tz8nrucXsjPx5B_il2y-7udONbK_oYrk7z9dYIMERzfYjZ_ShpKTqQddRhIT0FaGuUkPUWblEAhHKcgdfBaEO5P_vDvq9fqJe4LkgqXvefunzgAhwm-mnTawwcgLLGOGNcpFzu0kDj-3YLDtRIx3B21RNMzDf94efE5ktTT23HXXODCESMsqj=w640-h314&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Spring initialzr - SOAP web service&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt;&amp;nbsp;Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt;&amp;nbsp;Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt;&amp;nbsp;2.5.5&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-soap-course-management&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-soap-course-management&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Simple SOAP service with Spring Boot&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.soapcoursemanagement&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt;&amp;nbsp;Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt;&amp;nbsp;11&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Web Services&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Facilitates contract-first SOAP development. Allows for the creation of flexible web services using one of the many ways to manipulate XML payloads.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Data JPA&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;H2 Database&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small (2mb) footprint. Supports embedded and server modes as well as a browser based console application.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/h3&gt;&lt;div&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh6c1OivsrL5gcdfC6BMkko2EVkAwapvrxS4ljGKPrDbRMeIbENKMOV2W9MGXXOFf_H6PD1Ob9g3n_FNTONpYJB1Qf2kqiHpbGV7BazpIY_jqmIj_URxgwbg2yYP8XMtecaIj2AN5rFwCOwKVkY-bwlaBPg1ICpGEbmjorWZlPImi5bTEtGyLNT3-zT=s1019&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1019&quot; data-original-width=&quot;378&quot; height=&quot;1292&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh6c1OivsrL5gcdfC6BMkko2EVkAwapvrxS4ljGKPrDbRMeIbENKMOV2W9MGXXOFf_H6PD1Ob9g3n_FNTONpYJB1Qf2kqiHpbGV7BazpIY_jqmIj_URxgwbg2yYP8XMtecaIj2AN5rFwCOwKVkY-bwlaBPg1ICpGEbmjorWZlPImi5bTEtGyLNT3-zT=w479-h1292&quot; width=&quot;479&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Project structure of SOAP web service in IntelliJ Idea&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;pom.xml&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;         xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&lt;br /&gt;         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;    &amp;lt;parent&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;2.5.5&amp;lt;/version&amp;gt;&lt;br /&gt;        &amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;    &amp;lt;/parent&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;agnasarp-soap-course-management&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;soap-course-management&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;description&amp;gt;Demo project for Spring Boot&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;properties&amp;gt;&lt;br /&gt;        &amp;lt;java.version&amp;gt;11&amp;lt;/java.version&amp;gt;&lt;br /&gt;    &amp;lt;/properties&amp;gt;&lt;br /&gt;    &amp;lt;dependencies&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-web-services&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;wsdl4j&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;wsdl4j&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.ws&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-ws-security&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;exclusions&amp;gt;&lt;br /&gt;                &amp;lt;exclusion&amp;gt;&lt;br /&gt;                    &amp;lt;groupId&amp;gt;org.springframework.security&amp;lt;/groupId&amp;gt;&lt;br /&gt;                    &amp;lt;artifactId&amp;gt;spring-security-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;/exclusion&amp;gt;&lt;br /&gt;            &amp;lt;/exclusions&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;com.sun.xml.wss&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;xws-security&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;version&amp;gt;3.0&amp;lt;/version&amp;gt;&lt;br /&gt;            &amp;lt;exclusions&amp;gt;&lt;br /&gt;                &amp;lt;exclusion&amp;gt;&lt;br /&gt;                    &amp;lt;groupId&amp;gt;javax.xml.crypto&amp;lt;/groupId&amp;gt;&lt;br /&gt;                    &amp;lt;artifactId&amp;gt;xmldsig&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;/exclusion&amp;gt;&lt;br /&gt;            &amp;lt;/exclusions&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;com.h2database&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;h2&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;build&amp;gt;&lt;br /&gt;        &amp;lt;plugins&amp;gt;&lt;br /&gt;            &amp;lt;plugin&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;/plugin&amp;gt;&lt;br /&gt;            &amp;lt;!-- JAXB2 plugin --&amp;gt;&lt;br /&gt;            &amp;lt;plugin&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;jaxb2-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;version&amp;gt;2.5.0&amp;lt;/version&amp;gt;&lt;br /&gt;                &amp;lt;executions&amp;gt;&lt;br /&gt;                    &amp;lt;execution&amp;gt;&lt;br /&gt;                        &amp;lt;id&amp;gt;xjc&amp;lt;/id&amp;gt;&lt;br /&gt;                        &amp;lt;goals&amp;gt;&lt;br /&gt;                            &amp;lt;goal&amp;gt;xjc&amp;lt;/goal&amp;gt;&lt;br /&gt;                        &amp;lt;/goals&amp;gt;&lt;br /&gt;                    &amp;lt;/execution&amp;gt;&lt;br /&gt;                &amp;lt;/executions&amp;gt;&lt;br /&gt;                &amp;lt;configuration&amp;gt;&lt;br /&gt;                    &amp;lt;!-- Schema directory --&amp;gt;&lt;br /&gt;                    &amp;lt;sources&amp;gt;&lt;br /&gt;                        &amp;lt;source&amp;gt;${project.basedir}/src/main/resources/course-details.xsd&amp;lt;/source&amp;gt;&lt;br /&gt;                    &amp;lt;/sources&amp;gt;&lt;br /&gt;                    &amp;lt;!-- Java class output directory --&amp;gt;&lt;br /&gt;                    &amp;lt;outputDirectory&amp;gt;${project.basedir}/src/main/java&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;                    &amp;lt;!-- Package name for generated classes --&amp;gt;&lt;br /&gt;                    &amp;lt;packageName&amp;gt;com.agnasarp.courses&amp;lt;/packageName&amp;gt;&lt;br /&gt;                    &amp;lt;!-- Package clean -&amp;gt; false --&amp;gt;&lt;br /&gt;                    &amp;lt;clearOutputDir&amp;gt;false&amp;lt;/clearOutputDir&amp;gt;&lt;br /&gt;                &amp;lt;/configuration&amp;gt;&lt;br /&gt;            &amp;lt;/plugin&amp;gt;&lt;br /&gt;        &amp;lt;/plugins&amp;gt;&lt;br /&gt;    &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;application.properties&lt;/h3&gt;&lt;div&gt;Normally, the built-in tomcat is running on port 8080, it may be already assigned for other tasks, so we can change it and the context path of the application as below in the application.properties file&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;server.port=8180&lt;br /&gt;server.servlet.context-path=/agnasarp-soap-course-management&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;SoapCourseManagementApplication.java&lt;/h3&gt;&lt;div&gt;This is the entry point&amp;nbsp; of the Spring Boot application and now you can run the application on the port 8180.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.soapcoursemanagement;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;public class SoapCourseManagementApplication {&lt;br /&gt;&lt;br /&gt;    //    This is the entry point of the application.&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(SoapCourseManagementApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;In the contract-first approach, we have to define all the structures of the requests and responses, so we will define them in the example-files directory as below.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Request.xml&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;&lt;br /&gt;&amp;lt;GetCourseDetailsRequest xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;                         xmlns=&quot;https://www.agnasarp.com/courses&quot;&lt;br /&gt;                         xsi:schemaLocation=&quot;https://www.agnasarp.com/courses course-details.xsd&quot;&amp;gt;&lt;br /&gt;    &amp;lt;id&amp;gt;123&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;/GetCourseDetailsRequest&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Response.xml&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;&lt;br /&gt;&amp;lt;GetCourseDetailsResponse xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;                          xmlns=&quot;https://www.agnasarp.com/courses&quot;&lt;br /&gt;                          xsi:schemaLocation=&quot;https://www.agnasarp.com/courses course-details.xsd&quot;&amp;gt;&lt;br /&gt;    &amp;lt;CourseDetails&amp;gt;&lt;br /&gt;        &amp;lt;id&amp;gt;123&amp;lt;/id&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;SOAP Web Services&amp;lt;/name&amp;gt;&lt;br /&gt;        &amp;lt;description&amp;gt;SOAP Web Services with Spring Boot&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;/CourseDetails&amp;gt;&lt;br /&gt;&amp;lt;/GetCourseDetailsResponse&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;course-details.xsd&lt;/h3&gt;&lt;div&gt;This file is to validate all the parameters of SOAP requests and responses. Need to copy and past the same xsd file to the directory /src/main/resources because it should be in the classpath access just by the file name.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;&lt;br /&gt;&amp;lt;xs:schema xmlns:tns=&quot;https://www.agnasarp.com/courses&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&lt;br /&gt;        targetNamespace=&quot;https://www.agnasarp.com/courses&quot;&lt;br /&gt;        elementFormDefault=&quot;qualified&quot;&amp;gt;&lt;br /&gt;    &amp;lt;xs:element name=&quot;GetCourseDetailsRequest&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;                &amp;lt;xs:element name=&quot;id&quot; type=&quot;xs:int&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;        &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;    &amp;lt;xs:element name=&quot;GetCourseDetailsResponse&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;                &amp;lt;xs:element name=&quot;CourseDetails&quot; type=&quot;tns:CourseDetails&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;        &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;    &amp;lt;xs:element name=&quot;GetAllCourseDetailsRequest&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;        &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;    &amp;lt;xs:element name=&quot;GetAllCourseDetailsResponse&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;                &amp;lt;xs:element name=&quot;CourseDetails&quot; type=&quot;tns:CourseDetails&quot; maxOccurs=&quot;unbounded&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;        &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;    &amp;lt;xs:element name=&quot;DeleteCourseDetailsRequest&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;                &amp;lt;xs:element name=&quot;id&quot; type=&quot;xs:int&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;        &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;    &amp;lt;xs:element name=&quot;DeleteCourseDetailsResponse&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;                &amp;lt;xs:element name=&quot;status&quot; type=&quot;tns:Status&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;        &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;    &amp;lt;xs:complexType name=&quot;CourseDetails&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;            &amp;lt;xs:element name=&quot;id&quot; type=&quot;xs:int&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;xs:element name=&quot;name&quot; type=&quot;xs:string&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;xs:element name=&quot;description&quot; type=&quot;xs:string&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;    &amp;lt;xs:simpleType name=&quot;Status&quot;&amp;gt;&lt;br /&gt;        &amp;lt;xs:restriction base=&quot;xs:string&quot;&amp;gt;&lt;br /&gt;            &amp;lt;xs:enumeration value=&quot;SUCCESS&quot;/&amp;gt;&lt;br /&gt;            &amp;lt;xs:enumeration value=&quot;FAIL&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/xs:restriction&amp;gt;&lt;br /&gt;    &amp;lt;/xs:simpleType&amp;gt;&lt;br /&gt;&amp;lt;/xs:schema&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;WebServiceConfiguration.java&lt;/h3&gt;&lt;div&gt;Now we have to configure all configurations here in the WebServiceConfiguratio.java file. Here we will create few beans for a MessageDispatcherServlet, XSD Schema,&amp;nbsp;DefaultWsdl11Definition as below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.soapcoursemanagement.configuration;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.web.servlet.ServletRegistrationBean;&lt;br /&gt;import org.springframework.context.ApplicationContext;&lt;br /&gt;import org.springframework.context.annotation.Bean;&lt;br /&gt;import org.springframework.context.annotation.Configuration;&lt;br /&gt;import org.springframework.core.io.ClassPathResource;&lt;br /&gt;import org.springframework.ws.config.annotation.EnableWs;&lt;br /&gt;import org.springframework.ws.config.annotation.WsConfigurerAdapter;&lt;br /&gt;import org.springframework.ws.server.EndpointInterceptor;&lt;br /&gt;import org.springframework.ws.soap.security.xwss.XwsSecurityInterceptor;&lt;br /&gt;import org.springframework.ws.soap.security.xwss.callback.SimplePasswordValidationCallbackHandler;&lt;br /&gt;import org.springframework.ws.transport.http.MessageDispatcherServlet;&lt;br /&gt;import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition;&lt;br /&gt;import org.springframework.xml.xsd.SimpleXsdSchema;&lt;br /&gt;import org.springframework.xml.xsd.XsdSchema;&lt;br /&gt;&lt;br /&gt;import java.util.Collections;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;//Spring configuration&lt;br /&gt;@Configuration&lt;br /&gt;//Enable Spring Web Service&lt;br /&gt;@EnableWs&lt;br /&gt;public class WebServiceConfiguration extends WsConfigurerAdapter {&lt;br /&gt;&lt;br /&gt;    //    Create a MessageDispatcherServlet and map a URI&lt;br /&gt;    @Bean&lt;br /&gt;    ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {&lt;br /&gt;&lt;br /&gt;        MessageDispatcherServlet messageDispatcherServlet = new MessageDispatcherServlet();&lt;br /&gt;        messageDispatcherServlet.setApplicationContext(applicationContext);&lt;br /&gt;        messageDispatcherServlet.setTransformWsdlLocations(true);&lt;br /&gt;&lt;br /&gt;        return new ServletRegistrationBean(messageDispatcherServlet, &quot;/ws/*&quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Create XSD schema&lt;br /&gt;    @Bean&lt;br /&gt;    public XsdSchema coursesSchema() {&lt;br /&gt;&lt;br /&gt;        return new SimpleXsdSchema(new ClassPathResource(&quot;course-details.xsd&quot;));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Create a WSDL from the above schema&lt;br /&gt;    @Bean(name = &quot;courses&quot;)&lt;br /&gt;    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema coursesSchema) {&lt;br /&gt;&lt;br /&gt;        DefaultWsdl11Definition defaultWsdl11Definition = new DefaultWsdl11Definition();&lt;br /&gt;&lt;br /&gt;        defaultWsdl11Definition.setPortTypeName(&quot;CoursePort&quot;);&lt;br /&gt;        defaultWsdl11Definition.setTargetNamespace(&quot;https://www.agnasarp.com/courses&quot;);&lt;br /&gt;        defaultWsdl11Definition.setLocationUri(&quot;/ws&quot;);&lt;br /&gt;        defaultWsdl11Definition.setSchema(coursesSchema);&lt;br /&gt;&lt;br /&gt;        return defaultWsdl11Definition;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //XwsSecurityInterceptor&lt;br /&gt;    @Bean&lt;br /&gt;    public XwsSecurityInterceptor securityInterceptor() {&lt;br /&gt;        XwsSecurityInterceptor securityInterceptor = new XwsSecurityInterceptor();&lt;br /&gt;        //Callback Handler -&amp;gt; SimplePasswordValidationCallbackHandler&lt;br /&gt;        securityInterceptor.setCallbackHandler(callbackHandler());&lt;br /&gt;        //Security Policy -&amp;gt; securityPolicy.xml&lt;br /&gt;        securityInterceptor.setPolicyConfiguration(new ClassPathResource(&quot;securityPolicy.xml&quot;));&lt;br /&gt;        return securityInterceptor;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Bean&lt;br /&gt;    public SimplePasswordValidationCallbackHandler callbackHandler() {&lt;br /&gt;        SimplePasswordValidationCallbackHandler handler = new SimplePasswordValidationCallbackHandler();&lt;br /&gt;        handler.setUsersMap(Collections.singletonMap(&quot;user&quot;, &quot;password&quot;));&lt;br /&gt;        return handler;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //Interceptors.add -&amp;gt; XwsSecurityInterceptor&lt;br /&gt;    @Override&lt;br /&gt;    public void addInterceptors(List&amp;lt;EndpointInterceptor&amp;gt; interceptors) {&lt;br /&gt;        interceptors.add(securityInterceptor());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Course.java&lt;/h3&gt;&lt;div&gt;This DTO class is to communicate course details within the application with getters, setters, a constructor, and a toString() method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.soapcoursemanagement.domain;&lt;br /&gt;&lt;br /&gt;//DTO for course details&lt;br /&gt;public class Course {&lt;br /&gt;&lt;br /&gt;    private int id;&lt;br /&gt;    private String name;&lt;br /&gt;    private String description;&lt;br /&gt;&lt;br /&gt;    public Course(int id, String name, String description) {&lt;br /&gt;        this.id = id;&lt;br /&gt;        this.name = name;&lt;br /&gt;        this.description = description;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getId() {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setId(int id) {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getName() {&lt;br /&gt;        return name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setName(String name) {&lt;br /&gt;        this.name = name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getDescription() {&lt;br /&gt;        return description;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setDescription(String description) {&lt;br /&gt;        this.description = description;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public String toString() {&lt;br /&gt;        return &quot;Course{&quot; +&lt;br /&gt;                &quot;id=&quot; + id +&lt;br /&gt;                &quot;, name=&#39;&quot; + name + &#39;\&#39;&#39; +&lt;br /&gt;                &quot;, description=&#39;&quot; + description + &#39;\&#39;&#39; +&lt;br /&gt;                &#39;}&#39;;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Now we have to define an endpoint for the service that has methods to get the request and return the response. Apart from those methods, there will be few other mapper methods.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;CourseDetailsEndpoint.java&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.soapcoursemanagement.endpoint;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.courses.*;&lt;br /&gt;import com.agnasarp.soapcoursemanagement.domain.Course;&lt;br /&gt;import com.agnasarp.soapcoursemanagement.service.CourseDetailsService;&lt;br /&gt;import org.springframework.ws.server.endpoint.annotation.Endpoint;&lt;br /&gt;import org.springframework.ws.server.endpoint.annotation.PayloadRoot;&lt;br /&gt;import org.springframework.ws.server.endpoint.annotation.RequestPayload;&lt;br /&gt;import org.springframework.ws.server.endpoint.annotation.ResponsePayload;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;//This marks the class as a SOAP endpoint.&lt;br /&gt;@Endpoint&lt;br /&gt;public class CourseDetailsEndpoint {&lt;br /&gt;&lt;br /&gt;    CourseDetailsService courseDetailsService;&lt;br /&gt;&lt;br /&gt;    public CourseDetailsEndpoint(CourseDetailsService courseDetailsService) {&lt;br /&gt;        this.courseDetailsService = courseDetailsService;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    This method processes the GetCourseDetailsRequest and returns the output.&lt;br /&gt;    @PayloadRoot(namespace = &quot;https://www.agnasarp.com/courses&quot;, localPart = &quot;GetCourseDetailsRequest&quot;)&lt;br /&gt;    @ResponsePayload&lt;br /&gt;    public GetCourseDetailsResponse processGetCourseDetailsRequest(@RequestPayload GetCourseDetailsRequest getCourseDetailsRequest) {&lt;br /&gt;&lt;br /&gt;        return courseResponseMapper(courseDetailsService.getCourseById(getCourseDetailsRequest.getId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    This method processes the GetAllCourseDetailsRequest and returns the output.&lt;br /&gt;    @PayloadRoot(namespace = &quot;https://www.agnasarp.com/courses&quot;, localPart = &quot;GetAllCourseDetailsRequest&quot;)&lt;br /&gt;    @ResponsePayload&lt;br /&gt;    public GetAllCourseDetailsResponse processGetAllCourseDetailsRequest(@RequestPayload GetAllCourseDetailsRequest getAllCourseDetailsRequest) {&lt;br /&gt;&lt;br /&gt;        List&amp;lt;Course&amp;gt; courses = courseDetailsService.getAllCourses();&lt;br /&gt;        return allCourseResponseMapper(courses);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    This method delete a specific course from the course list..&lt;br /&gt;    @PayloadRoot(namespace = &quot;https://www.agnasarp.com/courses&quot;, localPart = &quot;DeleteCourseDetailsRequest&quot;)&lt;br /&gt;    @ResponsePayload&lt;br /&gt;    public DeleteCourseDetailsResponse processGetAllCourseDetailsRequest(@RequestPayload DeleteCourseDetailsRequest deleteCourseDetailsRequest) {&lt;br /&gt;&lt;br /&gt;        DeleteCourseDetailsResponse deleteCourseDetailsResponse = new DeleteCourseDetailsResponse();&lt;br /&gt;        deleteCourseDetailsResponse.setStatus(mapStatus(courseDetailsService.deleteCourseById(deleteCourseDetailsRequest.getId())));&lt;br /&gt;        return deleteCourseDetailsResponse;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Map enum status&lt;br /&gt;    private Status mapStatus(CourseDetailsService.Status status) {&lt;br /&gt;&lt;br /&gt;        if (status == CourseDetailsService.Status.SUCCESS) {&lt;br /&gt;            return Status.SUCCESS;&lt;br /&gt;        }&lt;br /&gt;        return Status.FAIL;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Map course to course details&lt;br /&gt;    private CourseDetails courseMapper(Course course) {&lt;br /&gt;&lt;br /&gt;        CourseDetails courseDetails = new CourseDetails();&lt;br /&gt;        courseDetails.setId(course.getId());&lt;br /&gt;        courseDetails.setName(course.getName());&lt;br /&gt;        courseDetails.setDescription(course.getDescription());&lt;br /&gt;&lt;br /&gt;        return courseDetails;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Map course details to response&lt;br /&gt;    private GetCourseDetailsResponse courseResponseMapper(Course course) {&lt;br /&gt;&lt;br /&gt;        GetCourseDetailsResponse getCourseDetailsResponse = new GetCourseDetailsResponse();&lt;br /&gt;        getCourseDetailsResponse.setCourseDetails(courseMapper(course));&lt;br /&gt;        return getCourseDetailsResponse;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Map all course details to response&lt;br /&gt;    private GetAllCourseDetailsResponse allCourseResponseMapper(List&amp;lt;Course&amp;gt; courses) {&lt;br /&gt;&lt;br /&gt;        GetAllCourseDetailsResponse getAllCourseDetailsResponse = new GetAllCourseDetailsResponse();&lt;br /&gt;        for (Course course : courses) {&lt;br /&gt;            CourseDetails courseDetails = courseMapper(course);&lt;br /&gt;            getAllCourseDetailsResponse.getCourseDetails().add(courseDetails);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return getAllCourseDetailsResponse;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Endpoint methods will directly call the CourseDetailsService class to get a course by id, get all courses, and delete a specific course. Here we have some static data to demonstrate the functionality of the service.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;CourseDetailsService.java&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.soapcoursemanagement.service;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.soapcoursemanagement.domain.Course;&lt;br /&gt;import com.agnasarp.soapcoursemanagement.exception.CourseNotFoundException;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.stream.Collectors;&lt;br /&gt;&lt;br /&gt;//Course details service&lt;br /&gt;@Service&lt;br /&gt;public class CourseDetailsService {&lt;br /&gt;&lt;br /&gt;    static List&amp;lt;Course&amp;gt; courses = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    static {&lt;br /&gt;&lt;br /&gt;        Course course1 = new Course(1, &quot;Java 11&quot;, &quot;Java 11 course&quot;);&lt;br /&gt;        Course course2 = new Course(2, &quot;Spring 5&quot;, &quot;Spring 5 course&quot;);&lt;br /&gt;        Course course3 = new Course(3, &quot;Spring boot&quot;, &quot;Spring boot course&quot;);&lt;br /&gt;&lt;br /&gt;        courses.add(course1);&lt;br /&gt;        courses.add(course2);&lt;br /&gt;        courses.add(course3);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Get course by id&lt;br /&gt;    public Course getCourseById(int id) {&lt;br /&gt;&lt;br /&gt;        return courses.stream().filter(c -&amp;gt; c.getId() == id).findAny().orElseThrow(() -&amp;gt; new CourseNotFoundException(&quot;Invalid course id &quot; + id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Get all courses&lt;br /&gt;    public List&amp;lt;Course&amp;gt; getAllCourses() {&lt;br /&gt;&lt;br /&gt;        return courses;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //    Delete a specific course&lt;br /&gt;    public Status deleteCourseById(int id) {&lt;br /&gt;&lt;br /&gt;        Iterator&amp;lt;Course&amp;gt; courseIterator = courses.iterator();&lt;br /&gt;        while (courseIterator.hasNext()) {&lt;br /&gt;            Course course = courseIterator.next();&lt;br /&gt;            if (course.getId() == id) {&lt;br /&gt;                courseIterator.remove();&lt;br /&gt;                return Status.SUCCESS;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        return Status.FAILS;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public enum Status {&lt;br /&gt;        SUCCESS, FAILS&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;An exception will occur for&amp;nbsp;getCourseById(int id) method if we request a course that is not available in the hardcoded array list. To handle that exception, we can create a custom exception handler class as below.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;CourseNotFoundException.java&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt; package com.agnasarp.soapcoursemanagement.exception;&lt;br /&gt;&lt;br /&gt;import org.springframework.ws.soap.server.endpoint.annotation.FaultCode;&lt;br /&gt;import org.springframework.ws.soap.server.endpoint.annotation.SoapFault;&lt;br /&gt;&lt;br /&gt;@SoapFault(faultCode = FaultCode.CUSTOM, customFaultCode = &quot;{https://www.agnasarp.com/courses}0_COURSE_NOT_FOUND&quot;)&lt;br /&gt;public class CourseNotFoundException extends RuntimeException {&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Constructs a new runtime exception with {@code null} as its&lt;br /&gt;     * detail message.  The cause is not initialized, and may subsequently be&lt;br /&gt;     * initialized by a call to {@link #initCause}.&lt;br /&gt;     */&lt;br /&gt;    public CourseNotFoundException(String message) {&lt;br /&gt;&lt;br /&gt;        super(message);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;There will be one final step to apply an authorization mechanism in the application. We had to create few beans in&amp;nbsp;WebServiceConfiguration.java for this and need to add below xml configuration the resources directory.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;securityPolicy.xml&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;xwss:SecurityConfiguration&lt;br /&gt;        xmlns:xwss=&quot;http://java.sun.com/xml/ns/xwss/config&quot;&amp;gt;&lt;br /&gt;    &amp;lt;xwss:RequireUsernameToken&lt;br /&gt;            passwordDigestRequired=&quot;false&quot; nonceRequired=&quot;false&quot; /&amp;gt;&lt;br /&gt;&amp;lt;/xwss:SecurityConfiguration&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;WSDL file&lt;/h3&gt;&lt;div&gt;You can load the WSDL file through the below URL.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://localhost:8180/agnasarp-soap-course-management/ws/courses.wsdl&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh0QWF38p6IKvG6kUIelCW6-raT1gchw8VcZ8lRBjQ9OURUQ7AnSY8nRjHtimy3x2YYb4FvIh0RFT4txDMZTq1k1mCbfcJ2t0qzActW31XpjMGqjb5NWXHjsRADNEJxXFWH7mFpbomWDsQ8N0QBJT1t14dggI9gkTT8vrP9HAQJJp4bNvwPt46bsqhq=s1506&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;822&quot; data-original-width=&quot;1506&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh0QWF38p6IKvG6kUIelCW6-raT1gchw8VcZ8lRBjQ9OURUQ7AnSY8nRjHtimy3x2YYb4FvIh0RFT4txDMZTq1k1mCbfcJ2t0qzActW31XpjMGqjb5NWXHjsRADNEJxXFWH7mFpbomWDsQ8N0QBJT1t14dggI9gkTT8vrP9HAQJJp4bNvwPt46bsqhq=w640-h350&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;WSDL file in the browser&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can use the Wisdler chrome extension to test the SOAP services.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;GetCourseDetailsRequest&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhe2B3fpm1IUKhej2v2uSKSCFrb9b76HWVxPrBeUaRaXGy0BKE9B_Bgv6P7eg1wpxjaEoh9LXC3aGx1u-YxFmNR6YgzeKXQRHpHzcppuu5_Sjliyr5C2EpjJX1fE0mwIcmiGi07J3aZzjzcGxZJb-ZfJiA3p1RAA69-ighO2hKjbq8x_VuelpbjTmuT=s759&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;347&quot; data-original-width=&quot;759&quot; height=&quot;292&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhe2B3fpm1IUKhej2v2uSKSCFrb9b76HWVxPrBeUaRaXGy0BKE9B_Bgv6P7eg1wpxjaEoh9LXC3aGx1u-YxFmNR6YgzeKXQRHpHzcppuu5_Sjliyr5C2EpjJX1fE0mwIcmiGi07J3aZzjzcGxZJb-ZfJiA3p1RAA69-ighO2hKjbq8x_VuelpbjTmuT=w640-h292&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;GetCourseDetails - Request&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMGDPnQZ9EaEjeUlEdxyYtOIqWzti9WEGNUlsHq5oqCjhw-4hc95BembGKI8qdPB0PGoFjpjfAWiqYpuIvYMxhjdSeSdLUQRnmyJrKR6e7KBuBbiO794V1N4s_TOsWWuSZVRg3TM2CGIPR4BR4zQ9nNC9mwJh6MMYtkPwk4RIDNwD2NlW0GLl8yLrA=s683&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;357&quot; data-original-width=&quot;683&quot; height=&quot;334&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMGDPnQZ9EaEjeUlEdxyYtOIqWzti9WEGNUlsHq5oqCjhw-4hc95BembGKI8qdPB0PGoFjpjfAWiqYpuIvYMxhjdSeSdLUQRnmyJrKR6e7KBuBbiO794V1N4s_TOsWWuSZVRg3TM2CGIPR4BR4zQ9nNC9mwJh6MMYtkPwk4RIDNwD2NlW0GLl8yLrA=w640-h334&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;GetCourseDetails - Response&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;GetAllCourseDetailsRequest&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjsZWwdDUcKe2QQRghxpiY5Jds03UkH6a5sftoiOdAQXb7XP1P686oD_umV0SxZDm5u6nckq2zQAH2mm-J0wmnP1IWYgVCQ6VDfZFSusDEfPjhWcPnx3SVb0DSKxnrlDmZJcW9UCSdWFx1rzsWT2L1tHBdmjCNVLUW6joE4R3No3kFmidXOwtGFgRNe=s706&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;344&quot; data-original-width=&quot;706&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjsZWwdDUcKe2QQRghxpiY5Jds03UkH6a5sftoiOdAQXb7XP1P686oD_umV0SxZDm5u6nckq2zQAH2mm-J0wmnP1IWYgVCQ6VDfZFSusDEfPjhWcPnx3SVb0DSKxnrlDmZJcW9UCSdWFx1rzsWT2L1tHBdmjCNVLUW6joE4R3No3kFmidXOwtGFgRNe=w640-h312&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;GetAllCourseDetails - Request&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjtBaiQMI5COepHylvAhuyXnaugCS3O3INzn4Fhan7M_2-JWYvLkNGagkCJ02j9-IxeyG_tOVsYE3x6TDuI_ylY5LjvgspuFQKhyCt_uVtgTmLn5dzVMWaH2KW_IB5w9Yzq3YUIn2NBKIPpMiCBVfj5FwV2_qXuWIXQ5yahfC7k427FCaXSRjKaSSgK=s696&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;503&quot; data-original-width=&quot;696&quot; height=&quot;462&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjtBaiQMI5COepHylvAhuyXnaugCS3O3INzn4Fhan7M_2-JWYvLkNGagkCJ02j9-IxeyG_tOVsYE3x6TDuI_ylY5LjvgspuFQKhyCt_uVtgTmLn5dzVMWaH2KW_IB5w9Yzq3YUIn2NBKIPpMiCBVfj5FwV2_qXuWIXQ5yahfC7k427FCaXSRjKaSSgK=w640-h462&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small; text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;GetAllCourseDetails - Response&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;DeleteCourseDetailsRequest&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgr5RVYafapPnuhHd7b1JJh6Dfc3_EbMqzjKQ1l5o-v5pMyv1RI2cs3Cyxn6iL0pX6Zj_N9Kg1z5IFz8AFMki6BvewKM28saLijswzRJ7e2OavVWVglSpx2LmsshHndbA2KPhCIB8Ugve3ZYm5pZhQMdyLU5jgPzWuzpd2Y8aRKf4-cA4Rbq-a_n_Qm=s715&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;322&quot; data-original-width=&quot;715&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgr5RVYafapPnuhHd7b1JJh6Dfc3_EbMqzjKQ1l5o-v5pMyv1RI2cs3Cyxn6iL0pX6Zj_N9Kg1z5IFz8AFMki6BvewKM28saLijswzRJ7e2OavVWVglSpx2LmsshHndbA2KPhCIB8Ugve3ZYm5pZhQMdyLU5jgPzWuzpd2Y8aRKf4-cA4Rbq-a_n_Qm=w640-h288&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;DeleteCourseDetails - Request&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiAznx9Z7jeD8T6bZyg1b2T9ag4U9Mc07nrXngX2TxL5Ox20wrESqvjbrprZ7uMVm1PjtxUxYbaIfDI-blqvx4xflw7vs7i7vtIqxajSD6uKK0p520H2WlTonVGD2c975tDZ2QCIHrYhLX3VeLr7YhdPWCDPp4QowkDDsehgqHphN4vhaeltpZQqc7x=s659&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;305&quot; data-original-width=&quot;659&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiAznx9Z7jeD8T6bZyg1b2T9ag4U9Mc07nrXngX2TxL5Ox20wrESqvjbrprZ7uMVm1PjtxUxYbaIfDI-blqvx4xflw7vs7i7vtIqxajSD6uKK0p520H2WlTonVGD2c975tDZ2QCIHrYhLX3VeLr7YhdPWCDPp4QowkDDsehgqHphN4vhaeltpZQqc7x=w640-h296&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small; text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;DeleteCourseDetails - Response&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;That is it for today. Now you can create SOAP services with Spring Boot very quickly with minimal effort than other services. You can follow along with this post and refer complete GitHub project as in given below. Good luck!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-soap-course-management&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download agnasarp-soap-course-management/download/button/#2e86de&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/3850013813991046557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/10/creating-simple-soap-web-service-with-spring-boot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3850013813991046557'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3850013813991046557'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/10/creating-simple-soap-web-service-with-spring-boot.html' title='Creating a simple SOAP web service with Spring Boot'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjq3i45xe7Nc8hqWCjW8wMyidmOYWStjRjcGPf7jNLI7dvollBwYkYV-ofW8dYXVab-QKLt7_dUxaXnuCanLD3uz8VeR-L_EWI5Eb258enWkJo1D32YPXRSrvw_tn-PKm-x02uyQwExgcNFLu2b9_gtMmNEbBZV1Zjn-kB5nfqVyBIMzC59cEr1fsOC=s72-w640-h448-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-6397403776729379401</id><published>2021-06-12T21:30:00.515-07:00</published><updated>2021-06-13T12:09:35.433-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>Creating an AWS EC2 instance and SSH into it</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/kaBzekzI83s&quot; width=&quot;320&quot; youtube-src-id=&quot;kaBzekzI83s&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;An EC2 instance is a type of virtual machine, but AWS has a lot of serverless implementations now. However, this is good enough to start learning AWS technologies. The video will also teach you to connect to the new EC2 instance using SSH via putty in Windows OS.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Step 1: Log in to AWS Management Console&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As the first step, you need to log in to AWS Management Console with an IAM user using your favorite web browser. Then you will see the console as below&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/--dKqikWyb9M/YMYfu_Ab_UI/AAAAAAAAAp4/LGL8x8sj8UYKoyRLPhhR6cGqIJ3OLm_AQCLcBGAsYHQ/s1600/aws%2Bmanagement%2Bconsole.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://1.bp.blogspot.com/--dKqikWyb9M/YMYfu_Ab_UI/AAAAAAAAAp4/LGL8x8sj8UYKoyRLPhhR6cGqIJ3OLm_AQCLcBGAsYHQ/w640-h360/aws%2Bmanagement%2Bconsole.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;AWS Management Console&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Step 2: Click the Launch Instance button&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Now you need to search the AWS product EC2. By default the product will be there in the console if you previously searched, otherwise you don&#39;t have to worry about it because you can use the search box by just typing ec2.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-ZlsKMToeRBk/YMYf-iLE0qI/AAAAAAAAAqE/Q5R3TES_jyQnhlBLGp8fHFtd11zYQNzjgCLcBGAsYHQ/launch%2Binstance.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-ZlsKMToeRBk/YMYf-iLE0qI/AAAAAAAAAqE/Q5R3TES_jyQnhlBLGp8fHFtd11zYQNzjgCLcBGAsYHQ/w640-h360/launch%2Binstance.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Launch Instance&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;EC2 has a region scope, so you should select the region first before you do anything with EC2. Please remember to select the nearest region.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Step 3: Choose an Amazon Machine Image (AMI)&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Here, you have to select an AMI. Have you heard about AMI? It is an Amazon-specific implementation of famous Operating Systems. We will select Amazon Linux 2 AMI in this tutorial. It is free tier eligible, so you don&#39;t have to pay at least a cent during the first 12 months period.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-YbCjrgALJSA/YMYgdMw71aI/AAAAAAAAAqs/e3EItOObGp0Jyf498yzUURRiXxhlmEaigCLcBGAsYHQ/step1%2Bchoose%2Ban%2Bami.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-YbCjrgALJSA/YMYgdMw71aI/AAAAAAAAAqs/e3EItOObGp0Jyf498yzUURRiXxhlmEaigCLcBGAsYHQ/w640-h360/step1%2Bchoose%2Ban%2Bami.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Choose an AMI&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 4: Choose an Instance Type&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Then select t2 micro as the Instance Type.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-7vwrIHAav-c/YMYgh-68yCI/AAAAAAAAAq8/5ysH_Axz49s7dSXz5zNQtZeckm-IUuH2wCLcBGAsYHQ/step2%2Bchoose%2Binstance%2Btype.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-7vwrIHAav-c/YMYgh-68yCI/AAAAAAAAAq8/5ysH_Axz49s7dSXz5zNQtZeckm-IUuH2wCLcBGAsYHQ/w640-h360/step2%2Bchoose%2Binstance%2Btype.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Choose an Instance Type&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 5: Configure Instance Details&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Now you have to fill in configuration details about the instance. Better to keep all default values for the first time run.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-thPul49OQuU/YMYglzyusOI/AAAAAAAAArA/bf7dgBXGwns3JfG1RuEytH1CsN4fPji_gCLcBGAsYHQ/step3%2Bconfigure%2Binstance%2Bdetails.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1295&quot; data-original-width=&quot;1600&quot; height=&quot;517&quot; src=&quot;https://lh3.googleusercontent.com/-thPul49OQuU/YMYglzyusOI/AAAAAAAAArA/bf7dgBXGwns3JfG1RuEytH1CsN4fPji_gCLcBGAsYHQ/w640-h517/step3%2Bconfigure%2Binstance%2Bdetails.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Configure Instance Details&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 6: Add Storage Details&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;You can keep default values for this as well.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-gR1UQV82kHM/YMYgrBoPowI/AAAAAAAAArE/iBdx_aab-QA_8xBkBT7WipwFOZ1hZDP0wCLcBGAsYHQ/step4%2Badd%2Bstorage.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-gR1UQV82kHM/YMYgrBoPowI/AAAAAAAAArE/iBdx_aab-QA_8xBkBT7WipwFOZ1hZDP0wCLcBGAsYHQ/w640-h360/step4%2Badd%2Bstorage.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Storage details&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 7: Add Tags&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;You can add details of the instance as key-value pair. Here, we will add the name of the instance.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-dxLomAD-g04/YMYgvw381yI/AAAAAAAAArM/gmHOEXUtHgoWNar8ypBMRDIDHawm2WV7wCLcBGAsYHQ/step5%2Badd%2Btags.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-dxLomAD-g04/YMYgvw381yI/AAAAAAAAArM/gmHOEXUtHgoWNar8ypBMRDIDHawm2WV7wCLcBGAsYHQ/w640-h360/step5%2Badd%2Btags.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Add Tags&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Step 8: Configure Security Group&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;You can attach an existing security group for the instance, but we will create a new group and attach it to our new instance.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-HnHQi2PwRQ4/YMYg0v4xyCI/AAAAAAAAArQ/40UFpU-TcvMOZabhGpRGdiGf7yqmi-j1ACLcBGAsYHQ/step6%2Bconfigure%2Bsecurity%2Bgroup.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-HnHQi2PwRQ4/YMYg0v4xyCI/AAAAAAAAArQ/40UFpU-TcvMOZabhGpRGdiGf7yqmi-j1ACLcBGAsYHQ/w640-h360/step6%2Bconfigure%2Bsecurity%2Bgroup.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Configure Security Group&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 9: Review Instance Launch&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;You don&#39;t have to do anything here but can just check and review your configurations.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-WkQW6kWUIK4/YMYg5Q2sHOI/AAAAAAAAArY/0A3MfrlRPcsCQzjh45ftUUHsFo24A6kGACLcBGAsYHQ/step7%2Breview%2Binstance%2Blaunch.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1002&quot; data-original-width=&quot;1600&quot; height=&quot;400&quot; src=&quot;https://lh3.googleusercontent.com/-WkQW6kWUIK4/YMYg5Q2sHOI/AAAAAAAAArY/0A3MfrlRPcsCQzjh45ftUUHsFo24A6kGACLcBGAsYHQ/w640-h400/step7%2Breview%2Binstance%2Blaunch.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Review Instance Launch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 10: Create a Key Pair&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;We would have a private key of the instance to log in to it in the future. Therefore, we have to create a key pay as in the below image. Download that .pem key file and store it in a safe place. Then click on the Launch Instance button.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-AvWpCF_dSxY/YMYg9gSpe2I/AAAAAAAAArg/5zKGdwPbYWUGc0fxuLG2Lquj8SoGuBj3ACLcBGAsYHQ/create%2Bnew%2Bkey%2Bpair.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-AvWpCF_dSxY/YMYg9gSpe2I/AAAAAAAAArg/5zKGdwPbYWUGc0fxuLG2Lquj8SoGuBj3ACLcBGAsYHQ/w640-h360/create%2Bnew%2Bkey%2Bpair.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Create a Key Pair&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 11: Launch Instance&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;As you can see, our new instance is running. These are the main steps to create a new EC2 instance using the Management Console.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-qRsymXQM9PY/YMYhE1uqObI/AAAAAAAAArs/TnNlGq43LEAKVTl9-4aIcysZIPkgDXbUQCLcBGAsYHQ/launch%2Bstatus.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-qRsymXQM9PY/YMYhE1uqObI/AAAAAAAAArs/TnNlGq43LEAKVTl9-4aIcysZIPkgDXbUQCLcBGAsYHQ/w640-h360/launch%2Bstatus.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Launch Instance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Now we need to have a mechanism to connect to the new instance just we have created. There are mainly two steps. You can use the EC2 Connect within the same browser and you will end up with a new browser tab. Here, we use SSH with the locally installed PuTTY tool.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 12: Create a .ppk Private Key&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;You can load the .pem private key to the PuTTYgen tool and save it as a .ppk file which can be understood by the PuTTY tool.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-MTy6A4XKt40/YMYhLdpVnDI/AAAAAAAAArw/AaAANr_nmUwrOzJ3vGAl18ZDzIVmq_IjwCLcBGAsYHQ/creating%2Bppk%2Bprivate%2Bkey.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-MTy6A4XKt40/YMYhLdpVnDI/AAAAAAAAArw/AaAANr_nmUwrOzJ3vGAl18ZDzIVmq_IjwCLcBGAsYHQ/w640-h360/creating%2Bppk%2Bprivate%2Bkey.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Create .ppk Private Key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 13: Load .ppk Private Key&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now you can open an SSH session with the PuTTY tool. Please go to Connection -&amp;gt; SSH -&amp;gt; Auth and browse the .ppk Private Key file for authentication. and save the session.&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-AvBQJYoSKtk/YMYhULNebNI/AAAAAAAAAr8/b55Peo8b-6URrr2L56khWiegFz1VZmXiQCLcBGAsYHQ/load%2Bppk%2Bprivate%2Bkey.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-AvBQJYoSKtk/YMYhULNebNI/AAAAAAAAAr8/b55Peo8b-6URrr2L56khWiegFz1VZmXiQCLcBGAsYHQ/w640-h360/load%2Bppk%2Bprivate%2Bkey.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Load .ppk Private Key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 14: Create an SSH session with the private key&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;In the same session, provide ec2-user@public-IP-of-the-instance as the hostname. Here you need to use ec2-user as the user of the instance. Mistakenly, we have added the AMI user and got errors few times as in the video.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-lGOOWCflelY/YMYhYU541LI/AAAAAAAAAsA/nVcXTDw4JEUnGv6CVcIdt5w8UdXtwAU2ACLcBGAsYHQ/correct%2Bec2%2Buser.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-lGOOWCflelY/YMYhYU541LI/AAAAAAAAAsA/nVcXTDw4JEUnGv6CVcIdt5w8UdXtwAU2ACLcBGAsYHQ/w640-h360/correct%2Bec2%2Buser.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Open a SSH Session&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 15: Connect to EC2 instance&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;If you do all steps properly, then you don&#39;t have any concerns about connecting to the instance. If you type &lt;b&gt;whoami&lt;/b&gt;, you will get &lt;b&gt;ec2-user&lt;/b&gt; as the result and you can ping to &lt;b&gt;www.google.com&lt;/b&gt; just to verify your instance has Internet access. Now you can update the instance and install additional software you want to use in your cloud solution.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-N0DsP3WeNQA/YMYhcjqcHeI/AAAAAAAAAsI/IjvVlivkpLYHlWJdbL9JLoZ0zYrfFQ1-QCLcBGAsYHQ/login%2Bsuccess.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-N0DsP3WeNQA/YMYhcjqcHeI/AAAAAAAAAsI/IjvVlivkpLYHlWJdbL9JLoZ0zYrfFQ1-QCLcBGAsYHQ/w640-h360/login%2Bsuccess.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Connecting to EC2 Instance&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;These are the main steps of creating a new EC2 instance and connecting to it using SSH via the PuTTY tool. The video will guide you in all the steps clearly. If you are willing to work with Amazon AWS as new implementations or migrating from on-premise services, it is highly recommended to start with EC2 instances. Hope you will enjoy the post and the video, we have given for working with EC2 instances. Please like and comment on the video and subscribe to our &lt;a href=&quot;https://www.youtube.com/channel/UCeTOWtTWUSu2AkpjGTQBERg&quot; target=&quot;_blank&quot;&gt;Agnasarp&lt;/a&gt; YouTube Channel. Feel free to comment if you have any doubt about the post. We will meet you again with a useful topic like this. Until then, bye!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/6397403776729379401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/06/creating-aws-ec2-instance-and-ssh-into-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6397403776729379401'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6397403776729379401'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/06/creating-aws-ec2-instance-and-ssh-into-it.html' title='Creating an AWS EC2 instance and SSH into it'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/kaBzekzI83s/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-1394098329542163044</id><published>2021-06-12T03:30:00.002-07:00</published><updated>2021-06-12T09:19:23.567-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="IT Security"/><title type='text'>Introduction to responsible browsing</title><content type='html'>&lt;h2 style=&quot;text-align: justify;&quot;&gt;Responsible Browsing&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Hi everyone! today, we have come with another valuable topic that makes you much safer while using the Internet especially in browsing the WWW. The objective of this post is to keep you informed about safe browsing practices, safe sharing while social networking, and the importance of responsible browsing. After reading this post, you will be able to browse the internet responsibly in both personal and professional settings, share information responsibly at social media sites, and mitigate unintended consequences of unsafe browsing practices with responsible browsing awareness.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-nK43akKHZPA/YMTNnY5_BwI/AAAAAAAAApw/TLZFeg76yOE9kH3Z1OrkgeR14sMocDAqgCLcBGAsYHQ/s1000/responsible%2Bbrowsing.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://1.bp.blogspot.com/-nK43akKHZPA/YMTNnY5_BwI/AAAAAAAAApw/TLZFeg76yOE9kH3Z1OrkgeR14sMocDAqgCLcBGAsYHQ/w640-h448/responsible%2Bbrowsing.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Responsible browsing&lt;/div&gt;&lt;/span&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Introduction to Responsible Browsing&lt;/h3&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;What is Responsible Browsing?&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Browsing habits that protect your personal information and online activity from cybercriminals, while being accountable for the impacts of your browsing habits on your company&#39;s information security.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Safe Browsing Practices&lt;/h3&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;What are Safe Browsing Practices?&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;All information shared on the internet is easily accessed by the public within a single click, which makes the internet a risky place. Cybercriminals often lurk behind the scenes while internet users browse online, prying to steal sensitive information and execute other malicious activities.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Hence, it is important to understand and follow certain safeguards in order to defend ourselves from the schemes of cybercriminals. These safeguards are known as safe browsing practices, which are simple tips you can take to keep your online activity safe from cybercriminals.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;In the next slides, we&#39;ve put together a list of simple recommendations that you could follow to strengthen your browsing security.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Here are some examples of safe browsing practices:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Create Secure &amp;amp; Unique Passwords&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Avoid Public Wi-Fi&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Avoid Unsecured Websites&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Delete Browsing History&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Block &amp;amp; Delete Cookies&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Disable Autofill &amp;amp; Save Passwords Features&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be Cautious of Popup Ads&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Keep Browser Up-to-date&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Create Secure &amp;amp; Unique Passwords.&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Creating strong passwords makes it difficult for cybercriminals to crack the password. A strong password should have a mix of the following:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Upper case&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Lower case&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Number&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Special character&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Some examples of a weak password are as below:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;password123&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;ThisPasswordIsStrong&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Some examples of a strong password are as below:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Th1sPa55wordisStr0ng&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;tPwdStr0ngIt1s&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;T0m@toGolfBa11Eat$Cars&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Refraining from reusing the same password at multiple sites is equally important as using strong passwords. Most of us are guilty of reusing the same passwords at multiple sites as it is more convenient to do so.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;However, this practice would make it easier for cybercriminals to hack multiple accounts e.g. email account, bank account, and social media account upon obtaining this multi-purpose password. The consequences of hacking these accounts are devastating as it involves the loss of a lot of sensitive information.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;As such, it is advisable to not only have passwords that are difficult to guess but also having more than one password for multiple accounts.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Avoid Public Wi-Fi&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;People use public Wi-Fi all the time, at a coffee shop, in a hotel lobby, or while waiting at the airport. However, there are many security dangers that lurk on public Wi-Fi networks. Data sent through public Wi-Fi networks can easily be intercepted by cybercriminals.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;If you use public Wi-Fi, your personal data could be at risk. A common danger is fake public Wi-Fi networks. These have similar-sounding names to legitimate public Wi-Fi networks and are meant to trick and confused you.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Once you connect to these fake Wi-Fi networks, everything you do online is monitored by cybercriminals, who scan your activity for banking and social media login information.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Public Wi-Fi connections can also be used to distribute malware. Cybercriminals can easily plant viruses and other malicious software onto your computer via an unsecured Wi-Fi connection, causing serious damage to your computer and jeopardizing your personal information.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Luckily, there are ways to stay safe on public Wi-Fi:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Verify your connection. Be sure to ask the employee what the actual public Wi-Fi is to avoid connecting to a bogus network.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Avoid checking sensitive data. Unless it’s absolutely necessary, hold off on login into your social media, email, and especially your financial accounts while on public Wi-Fi.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Turn off sharing. Be sure to turn off sharing while you are on public Wi-Fi. If you leave it on while in a public place, cybercriminals can easily gain access to sensitive personal information and fields.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Use a VPN. If you need to check sensitive data like your banking account while on public Wi-Fi, use a virtual private network or a VPN. Even if a cybercriminal positions himself in the middle of your connection, your data will be strongly encrypted.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Turn your Wi-Fi off when you’re done. Even if you haven&#39;t actively connected to your network, the Wi-Fi hardware and your computer can still be transmitting data with any network in range. If you are through using the internet, ensure that ur Wi-Fi is turned off.&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Understanding public Wi-Fi risks will ensure your important data doesn&#39;t fall into malicious hands.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Avoid Unsecured Websites&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Websites with secured connection will have URLs that start with “https.” instead of “http://”&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;The “s” suffix indicates that the website information is secured and encrypted. This security is provided by an SSL certificate, which certifies that sensitive information entered into that site is secured.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Without an SSL certificate, that information is highly vulnerable to be exposed and easily accessible by cybercriminals.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Identify a padlock symbol in the browser window frame, which appears when you attempt to log in to your existing accounts or register new accounts. You can click on the padlock icon to verify that your connection is secure.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Check if the company owning the website is real. A legitimate website will have the following:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;an “About Us” page: It shows a brief introduction of the company which owns the website, which clearly states their history, goals and describes what they do.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;A “Contact Us” page: A legitimate website will display its contact information too. This includes an email address, a phone number, and a physical address.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;A “Privacy Policy” page: It communicates how your data is collected, used, and protected by the website, as required by data privacy laws.&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;If a website does not have these pages, it is likely that it is a fake website created by an organization that does not exist.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Check if the web domain is genuine. Domains are used in URLs to identify particular web pages. For example, in the URL https://www.amazon.com/, the domain name is “amazon”. Knowing this, cybercriminals often create websites that mimic genuine websites to trick people into purchasing something on or logging into their imposter site e.g. https://www.amaz0n.com/.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;An example below shows another common cyber-attack scheme, which is tweaking domain names by adding characters like “-tv”.&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Domain:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;“telegraph.co.uk.”&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;“telegraph-tv.com.”&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Delete Browsing History&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Most browsers have default settings on storing a record of sites we have searched, which is known as browsing history.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Browsing history is meant to improve our interface with the search engine for our convenience. However, it is often targeted by cybercriminals because search engines will store the history of searches along with the user’s IP address, which is highly valuable to scam artists.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Let’s explore a few ways to curb the risk of browsing history being exploited.&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Configure browser to delete browsing history regularly.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Delete history manually after a browsing session.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Set browser to private browsing mode, which will not track your browsing history.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Block &amp;amp; Delete Cookies&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Cookies are files that store on your device, as a history log from websites that store information about you between browsing sessions.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Most cookies are harmless but some are being used to track your browsing habits for advertising, or being used by cybercriminals to build a profile of your interests and activities for criminal purposes.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Similar to browsing history, blocking and deleting cookies is another good practice to mitigate the risk of information stored in the cookies being potentially exploited by criminals.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Disable Autofill &amp;amp; Save Passwords Features&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Aside from browsing history and cookies, most browsers and many websites offer to “remember” your details and passwords for future use. This is known as the “autofill” and “save passwords” features.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;While these features provide convenience, cybercriminals could use this vulnerability to hijack your browsing session and steal your information as you stay logged in to the website.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;As such, disabling these features and clearing your saved passwords could mitigate the risk of exposing your sensitive information and credentials to cybercriminals.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Be Cautious of Popup Ads.&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Avoid clicking popup ads. Popup Ads are often made to look like part of a website and are often being used to lure users into a scam.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;These ads are typically invasive. They take up the whole page and often require you to take a survey (or complete some other action) before continuing or redirect you to another page.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Turn on your browser’s popup blocker. Popup blocking is now a standard browser feature and should be enabled any time you are surfing the web.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;If it must be disabled for a specific program, turn it back on as soon as that activity is complete.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Although popup blocking does not negate the threat hidden in each website, it reduces the chances of users accidentally clicking the ads.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Keep Browser Up-to-date&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Keep your browser up to date.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Most updates will include security patches. New patches are often released to fix existing vulnerabilities in browser software, so having the most up-to-date versions is critical.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;If you&#39;re not installing those updates, you may leave yourself vulnerable to new threats that pop up constantly.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Therefore, always make it a point to update your browser and leave no room for any form of security vulnerabilities.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Safe Sharing Tips for Social Networking&lt;/h3&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Safe Sharing Tips for Social Networking&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Social networking is the use of internet-based social media programs to make virtual connections with friends, family, classmates, customers, and clients.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;While social media is a platform that is often used for information sharing, oversharing certain information online can put your data at risk.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;For example, cybercriminals can personalise social engineering attacks and spam emails based on your likes and interests. These emails often appear to be sent from &quot;friends&quot; or coworkers, which can be very deceiving.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Therefore, learning the risks of oversharing and following some safe sharing tips for social networking can help to protect your digital identity and sensitive information.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be careful about what you share online. Never reveal sensitive personal information. This information can be misused by social engineers such as stealing your identity, applying for credit cards, use current bank accounts, and open new accounts.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Limit what you share online. Get familiar with the privacy policies of the social media channels you use and customize your privacy settings to control who sees what. A private profile is always safer than a public profile.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be wary of unsolicited contacts. When it comes to friend requests, don’t accept requests particularly from people you don&#39;t know. It could be a fake account trying to spread spam emails or viruses into your devices. You should only connect with people that you know and trust in real life.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Remember to log off once you’re done with social networking. Leaving your social media account logged on your device while you are physically away risking your account getting hacked.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Importance of Responsible Browsing&lt;/h3&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Importance of Responsible Browsing&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;We use web browsers every day to access information and run errands.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;What we do not realize is how easily we could expose our sensitive information online while browsing.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Browsing without caution can put you at risk of all sorts of dangers, which include identity theft, data theft, and even computer damage.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Let’s explore more about these dangers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Dangers of Unsafe Browsing&lt;/h3&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Identity Theft&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Sensitive information (e.g. credit card number, bank accounts, IC number &amp;amp; mobile number) could be stolen &amp;amp; used for malicious purposes.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;It can be used to make fraudulent purchases, sign up for new credit cards, and even apply for government benefits.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Data Theft&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Files from your computer such as photographs, videos, and documents are stolen &amp;amp; then sold for illicit purposes.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Computer Damage&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Viruses are sent to computers to cause damage and make them inoperable.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Importance of Responsible Browsing&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Identity theft, data theft, and computer damage are just some of the few dangers of unsafe browsing practices. When cybercriminals get a hold of your credentials and sensitive information, they can use it to access your corporate networks and subsequently steal corporate information too.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Experiencing data breaches will not only give a company a bad reputation and affect its business operations, but it will also compromise its customer’s trust.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Losing customer’s trust is the last thing we have to see happening, which is why everyone in a company plays an essential role in practicing browsing habits that will improve the security of your online activities.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Recap – What Can We Do?&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Create secure &amp;amp; unique passwords&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Avoid public Wi-Fi &amp;amp; unsecured websites&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Delete browsing history&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Block &amp;amp; delete cookies&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Disable autofill &amp;amp; save passwords features&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be cautious of popup ads&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Keep browser up-to-date&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be careful about what you share online&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be wary of unsolicited contacts&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Limit what you share online&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Remember to log off once you’re done with social networking&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/1394098329542163044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/06/introduction-to-responsible-browsing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/1394098329542163044'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/1394098329542163044'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/06/introduction-to-responsible-browsing.html' title='Introduction to responsible browsing'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-nK43akKHZPA/YMTNnY5_BwI/AAAAAAAAApw/TLZFeg76yOE9kH3Z1OrkgeR14sMocDAqgCLcBGAsYHQ/s72-w640-h448-c/responsible%2Bbrowsing.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-8137803637152454388</id><published>2021-06-12T01:30:00.088-07:00</published><updated>2021-06-12T02:56:38.051-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT Security"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><title type='text'>Introduction to mobile security and social media</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-oj49mb0gZlE/YMRx964rHXI/AAAAAAAAApo/DP4pXq-lIMUveXi4gu5vRqXRonsOZgioACLcBGAsYHQ/s1000/mobile%2Bsecurity%2B%2526%2Bsocial%2Bmedia.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://1.bp.blogspot.com/-oj49mb0gZlE/YMRx964rHXI/AAAAAAAAApo/DP4pXq-lIMUveXi4gu5vRqXRonsOZgioACLcBGAsYHQ/w640-h448/mobile%2Bsecurity%2B%2526%2Bsocial%2Bmedia.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mobile security &amp;amp; social media&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Introduction to mobile security and social media&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Mobile security which is also known as wireless security serves as a protection of smartphones, tablets, laptops, and other portable computing devices and networks they connect to and from threats and vulnerabilities. This will secure mobile devices by authenticating users and protecting or restricting access to data stored on the devices.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;On the other hand, when we come to social media, it is a collective of online communications channels dedicated to community-based inputs, interaction, content sharing, and collaboration. Simply, the ability to share photos, opinions, events, etc. in real-time.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Types of mobile devices&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Mobile devices have become more than a luxury item to have and it has become a necessity so much so that employees do not just rely on them for day to day to day conversation, they are practically living on them. For many, checking their phones is the first and last thing they do every day.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As a result, its popularity in usage has been a rise in the number of threats and attacks that hackers are still constantly finding more ways and means to break into them. Being aware of what sort of devices you have is the first key to understanding your position and responsibility in making sure you are well guarded against potential digital threats and vulnerabilities.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The list below depicts some of the commonly used mobile devices in the workplace and the risks that may potentially arise from using them.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Smartphones&lt;/li&gt;&lt;li&gt;Laptops&lt;/li&gt;&lt;li&gt;Bluetooth devices&lt;/li&gt;&lt;li&gt;Tablets&lt;/li&gt;&lt;li&gt;BYOD (Bring Your Own Device)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Smartphones&lt;/h4&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;A smartphone:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Is a glorified, &lt;span style=&quot;font-family: inherit;&quot;&gt;compact&lt;/span&gt;, and mobile integrated computer that can fit into your pocket&lt;/li&gt;&lt;li&gt;Has touchscreen interface&lt;/li&gt;&lt;li&gt;Has internet access for web browsing&lt;/li&gt;&lt;li&gt;Has the ability to run software applications, making day to day work operations and leisure much&amp;nbsp; more convenient and easy&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Smartphones have sensors such as cameras, microphones, GPS receivers, compasses, and accelerometers which could be exploited, and may collect personal information of the user for the benefit and use of the hacker.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a result, hackers can resort to sneaking in dangerous malware onto your device inconspicuously which could ultimately render your phone useless and exposed to digital theft, such as ransomware.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Laptops&lt;/h4&gt;&lt;div&gt;A laptop:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Is a small personal integrated computer designed for portability&lt;/li&gt;&lt;li&gt;Possesses all the functionality and features that of a desktop but smaller and having ease of portability&lt;/li&gt;&lt;li&gt;Runs on AC power or batteries which are rechargeable&lt;/li&gt;&lt;li&gt;Possesses a touchpad or in some cases, a trackball and pointing stick&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Desktop computers and laptops are commonly targeted to gather passwords or financial account information or to construct a botnet to attack another target which could disrupt day-to-day businesses, costing millions in losses.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Laptop security solutions can involve physical lock-and-key systems, locator devices, or other kinds of items that make it difficult for thieves to steal laptop computers, both physically and digitally.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Bluetooth devices&lt;/h4&gt;&lt;div&gt;Bluetooth devices:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Is any device that communicates with a variety of electronic devices and creates personal networks operating within the unlicensed 2.4 GHz band&lt;/li&gt;&lt;li&gt;Bridge multiple industrial Ethernet networks&amp;nbsp;&lt;/li&gt;&lt;li&gt;Can be used to identify and track object positions with the real-time location system&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many Bluetooth devices connect with each other using a simple numeric PIN number that is usually not encrypted. This means that hackers often only need to crack a numeric code to establish a connection between their devices and yours, and ultimately steal personal data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some hackers may use this connection to send you messages as a milder form of disruption and nuisance. Others, however, may use it to access your private data or upload viruses that could jeopardize your personal info and security.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Tablets&lt;/h4&gt;&lt;div&gt;Tablets:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Are a wireless touch screen personal computer that is smaller than a notebook but larger than a smartphone&lt;/li&gt;&lt;li&gt;Are built with wireless Internet or local area networks (LAN) and a variety of software applications, including business applications, Web browsers, and games.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Like phones, tablets tend to get carried everywhere and are thus prone to lose and theft. Although some tablets do support hardware data encryption, not all do and many users don&#39;t bother to enable PIN locks, much less encryption.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even users who do lock their own tablets may not realize that data stored there is readily accessible to downloaded apps. Perhaps more importantly, most users don’t even bother reading the warnings displayed when installing apps, giving little thought to potential risk of being hacked.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;BYOD (Bring Your Own Device)&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;Bring your own device (BYOD):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Are any devices of which employees bring their own personal computing devices, be it smartphones, laptops, tablets, pen drives, and such to the workplace for use and connectivity on the secure corporate network&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bring your own device (BYOD) is one of the most complicated issues for IT departments because it exposes the entire organization to huge security risks and vulnerabilities like malware attacks due to the lack of stringent digital security protocols.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It increases the risk of data leakage knowing that mobile devices are the weakest link to its security and are the most susceptible to attacks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BYOD also makes it difficult to distinguish between personal data and corporate data because they are&lt;/div&gt;&lt;div&gt;both kept on the same device. So if the device is lost, the corporate data will also be accessed by any individual who has gotten the device.&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Importance of Mobile Security&lt;/h3&gt;&lt;h4&gt;Why do we care?&lt;/h4&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;More data may bring more danger with mobile devices&lt;/li&gt;&lt;li&gt;Cyberattacks on mobiles are increasing by the day&amp;nbsp;&lt;/li&gt;&lt;li&gt;Threats have evolved to be more sophisticated (exp: mobile app threats)&lt;/li&gt;&lt;li&gt;Businesses worry about smartphone risks&lt;/li&gt;&lt;li&gt;Dangers of information that can be stolen over wireless networks&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Why are we vulnerable?&lt;/h4&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;They are everywhere&lt;/li&gt;&lt;li&gt;Produced by different vendors&lt;/li&gt;&lt;li&gt;Who owns them?&lt;/li&gt;&lt;li&gt;Pre-existence of mobile malware&lt;/li&gt;&lt;li&gt;Device users are often uneducated about risks and how to secure devices&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Emergence and Growth of Mobile App Threats&lt;/h4&gt;&lt;div&gt;Hackers target smartphones mostly because:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;They can create seemingly good (“free”) apps; most of it with your permission, which actually installs malicious code in the background, which can then be used to collect your information and even steal your identity&lt;/li&gt;&lt;li&gt;They can dispatch unwanted text to premium numbers causing nuisances and possibly extract info (also known as spam or phishing)&lt;/li&gt;&lt;li&gt;They can seize your bank account, wipe your phone&#39;s data, lock it up and even kill your device altogether&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Two major mobile app threats:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Malware/Malicious apps&lt;/li&gt;&lt;li&gt;Legal/Approved apps&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may have already heard about Malware/Malicious Apps so let&#39;s talk about Legal/Approved Apps.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Legal/Approved Apps&lt;/h4&gt;&lt;div&gt;Legal apps:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Apps that may potentially be used to collect information about you that can be sold to advertisers and could also be used as evidence against you in a legal dispute.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mobile apps that collect and share information about you are constantly publishing in the background and in this respect have the ability to invade your privacy as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So remember when you authorize an app on a mobile device, you&#39;re allowing that app to not only perform its functions but also to access information like your calendar, contacts, and location.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Facebook, Instagram, Twitter, and Gmail are mobile apps that read your address book and track your location.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Types of Mobile Threats&lt;/h3&gt;&lt;h4&gt;Common Attacks&lt;/h4&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Theft/Gaining Physical Access&lt;/li&gt;&lt;li&gt;Malware&lt;/li&gt;&lt;li&gt;Data Interception&lt;/li&gt;&lt;li&gt;Eavesdropping&lt;/li&gt;&lt;li&gt;Insider Threats&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;What can we do?&lt;/h3&gt;&lt;h4&gt;Ways to reduce the risk of mobile security attacks&amp;nbsp;&lt;/h4&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Enable remote wipe function and consider the “Find Your Device Option”&lt;/li&gt;&lt;li&gt;Be cautious about what you share – text is not inherently secure&lt;/li&gt;&lt;li&gt;Use Strong Passwords&lt;/li&gt;&lt;li&gt;Download only secure applications&lt;/li&gt;&lt;li&gt;Backup and protect your data&lt;/li&gt;&lt;li&gt;Don’t ‘jailbreak’ or ‘root’ your device&lt;/li&gt;&lt;li&gt;Don’t connect to a work system or the network unless you have permission to do so&lt;/li&gt;&lt;li&gt;Report anything suspicious to the security team&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Setting up a two/multi-factor authentication&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;The system works by pushing unique passcodes to your mobile phone to authenticate your identity when you log in, apart from just keying in your password for a user/email/social media account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As an example, let us take Facebook as the application of our choice in setting up a two/multi-factor authentication&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Log into Facebook on your computer or Facebook app on mobile&lt;/li&gt;&lt;li&gt;Open the settings menu&lt;/li&gt;&lt;li&gt;Select the Security option in the left menu&lt;/li&gt;&lt;li&gt;Click the “Login Approvals” option&lt;/li&gt;&lt;li&gt;Check the Login Approvals box&lt;/li&gt;&lt;li&gt;Enter your mobile number (if prompted)&lt;/li&gt;&lt;li&gt;Decide if you want to enable Login Approvals immediately&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;How to better manage/switch off Geo-Location Tracking apps&lt;/h4&gt;&lt;div&gt;The system works by using real-time geo-data (also known as geographical data) from a mobile device or smartphone to provide information, entertainment, or security to the user.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This system relies heavily on the mobile user’s location, the primary objective of the service provider’s system is to determine where the user is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As an example, let us take Facebook as the application of our choice in managing our geolocation services for both Apple iOS and Google Android.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Apple iOS&lt;/h4&gt;&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Open your iPhone’s Settings&lt;/li&gt;&lt;li&gt;Scroll down until you locate “Facebook” and tap it&lt;/li&gt;&lt;li&gt;Tap on “Settings”&lt;/li&gt;&lt;li&gt;Tap on “Location” (You’ll see this option near the top of the screen)&lt;/li&gt;&lt;li&gt;Tap on “Never” (Blue checkmark will appear to the right of Never; if you wish Facebook to not track your location anymore)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Google Android&lt;/h4&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Open your Android’s Settings&lt;/li&gt;&lt;li&gt;Scroll down until you locate “Manage apps” and tap it&lt;/li&gt;&lt;li&gt;Tap on “App permissions”&lt;/li&gt;&lt;li&gt;Tap on “Your Location” (You may have to scroll down first to find this option)&lt;/li&gt;&lt;li&gt;Scroll the page down till you locate “Facebook” and slide the switch to the left to switch it off&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These are the tips and tricks that we want to share with you about mobile security with social media platforms. Hope you understand what you are currently using as mobile devices and apps run on them and preliminary actions that you can take to protect yourself and corporate data from attackers.&amp;nbsp;Feel free to ask about the topic and share your ideas and suggestions in the comment section below. We will meet again with another valuable tech topic. Until then, bye!&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/8137803637152454388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/06/introduction-to-mobile-security-and-social-media.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/8137803637152454388'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/8137803637152454388'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/06/introduction-to-mobile-security-and-social-media.html' title='Introduction to mobile security and social media'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-oj49mb0gZlE/YMRx964rHXI/AAAAAAAAApo/DP4pXq-lIMUveXi4gu5vRqXRonsOZgioACLcBGAsYHQ/s72-w640-h448-c/mobile%2Bsecurity%2B%2526%2Bsocial%2Bmedia.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-7971066040427659440</id><published>2021-06-09T01:30:00.054-07:00</published><updated>2021-06-12T04:58:07.392-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="IoT"/><title type='text'>An introduction to Internet of Things (IoT) with AWS</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-3_U0IAKuZXM/YMEYj_WZVEI/AAAAAAAAApc/K49gBBRaZV0g_UL5uXPzHvdB-oZBwHlLACLcBGAsYHQ/s1000/iot%2Bwith%2Baws.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://1.bp.blogspot.com/-3_U0IAKuZXM/YMEYj_WZVEI/AAAAAAAAApc/K49gBBRaZV0g_UL5uXPzHvdB-oZBwHlLACLcBGAsYHQ/w640-h448/iot%2Bwith%2Baws.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IoT with AWS&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;No surprise we are in an era with billions of devices that are positioned in our homes, schools, offices, vehicles, and simply all around the world. We have to have a mechanism to interconnect them and use data generated from them wisely. Old classic solutions will not have the capability to cater to the highly increasing demand. AWS has come up with a full solution set with cloud technology. In their platform, they are mainly concerned about the capabilities of data analysis, security, AI integration, and scalability.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;AWS provides comprehensive and in-depth IoT services from edge to cloud. AWS IoT is the only cloud provider that combines comprehensive data management and analytics with simple services vast IoT data combinations. AWS IoT provides services for all levels of security, including security mechanisms such as encryption and access control to device data, and services for continuous monitoring and audit configurations. AWS combines artificial intelligence with the Internet of Things to make devices smarter. Templates run 2x faster than others, so you can create your own templates in the cloud and publish them to devices. AWS IoT is built on a proven and reliable cloud infrastructure that spans billions of devices and billions of messages. AWS IoT integrates with other AWS services to provide a complete solution.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There are lots of use cases that AWS IoT customers have built with a bunch of provided technologies.&amp;nbsp;Customers have built industrial IoT applications for predictive quality and maintenance and to remotely monitor operations, connected home applications for home automation, home security and monitoring, and home networking and commercial applications for traffic monitoring, public safety, and health monitoring. AWS provides a variety of IoT services and solutions.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;AWS IoT services&lt;/h2&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Device software&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h4&gt;FreeRTOS&lt;/h4&gt;&lt;div&gt;FreeRTOS is an open-source, real-time operating system for microcontrollers that facilitates programming, implementation, security, connectivity, and management of small, low-power devices. FreeRTOS is distributed for free under the MIT Open Source License, and a growing number of software libraries are suitable for use in a variety of industries and applications. This includes securely connecting small, energy-efficient devices to advanced devices using AWS cloud services such as AWS IoT Core and AWS IoT Greengrass. With a focus on stability and ease of use, FreeRTOS provides predictability of long-term support releases.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;AWS IoT Greengrass&lt;/h4&gt;&lt;div&gt;&lt;div&gt;AWS IoT Greengrass is an open-source IoT service that helps you build, deploy, and manage device software. Customers use AWS IoT Greengrass for IoT applications in millions of homes, factories, vehicles, and enterprise devices. The generated data can be used to plan local device operations, make predictions based on machine learning models, and filter and aggregate device data. Only important information can be sent to the cloud.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Connectivity &amp;amp; control services&lt;/h3&gt;&lt;h4&gt;AWS IoT Core&lt;/h4&gt;&lt;div&gt;AWS IoT Core allows you to connect your IoT devices to the AWS Cloud without the need to set up or manage servers. AWS IoT Core supports billions of devices and billions of messages, ensuring those messages are processed and tracked by AWS and other device endpoints. AWS IoT Core allows your app to monitor and communicate with any device, even when not connected.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h4&gt;AWS IoT Device Defender&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;AWS IoT Device Defender is a fully managed service that you can use to secure a set of IoT devices. AWS IoT Device Defender continuously monitors your IoT settings to ensure you are not deviating from optimal security measures. A configuration is a set of engineering controls deployed so that information is provided when devices communicate with the cloud and with each other. AWS IoT Device Defender makes it easy to manage and run IoT settings such as device authentication, device authorization, and device data encryption. AWS IoT Device Defender continuously evaluates the&amp;nbsp; IoT settings of your device against a predefined set of security measures. If there are vulnerabilities in your IoT configuration that may pose a security risk, such as the sharing of an identity certificate among multiple devices, or a device with a revoked identity certificate trying to connect to AWS IoT Core, AWS IoT Device Defender will send an alert.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h4&gt;AWS IoT Device Management&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;When deploying hundreds of IoT devices, it is critical to track, monitor, and manage connected devices that span hundreds of thousands to millions of devices. After deployment, you need to ensure that your IoT devices are functioning properly and securely. You must also have secure access to your device, monitor device health, perform remote troubleshooting, and manage software and operating system updates.&amp;nbsp;AWS IoT Device Management can easily and securely register, organize, monitor, and remotely manage IoT devices on a large scale.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Analytics services&lt;/h3&gt;&lt;h4&gt;AWS IoT Analytics&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;AWS IoT Analytics is a fully managed service that makes it easy to create, run, and perform complex analytics on large volumes of IoT data without having to worry about the cost and complexity of running IoT in general. This is the easiest way to analyze IoT data, gain insights, and make more accurate and better decisions for IoT and machine learning applications.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;h4&gt;AWS IoT SiteWise&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;AWS IoT SiteWise is a managed service that facilitates the collection, storage, organization, and monitoring of data in industrial equipment and helps make better data-driven decisions. Use AWS IoT SiteWise to monitor the operations of any equipment, quickly calculate industry-wide performance metrics, analyze industrial equipment&amp;nbsp;data, avoid costly downtime, and reduce production delays. This allows you to continuously collect data across devices, quickly identify remote monitoring issues, and improve multi-site operations with centralized data.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;h4&gt;AWS IoT Events&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;AWS IoT Events is a fully managed service that makes it easy to detect and respond to events using IoT sensors and applications. There are event data models that define more complex situations than expected. Example: Motion detectors use motion signals to activate lights or security cameras when the line is down. Before IoT events, you had to create expensive custom programs that collect data and apply decision logic to identify events and launch other programs that respond to those events. When an IoT incident occurs, the event can be easily detected with thousands of IoT sensors that send various remote data such as freezer temperature, the humidity of respiratory equipment, and belt speed to the engine. You just need to identify the relevant data sources that should be selected, use simple statements to define the logic for each event, and define the alerts or actions to be generated when the event occurs. IoT Events continuously monitors data from multiple IoT sensors and applications and integrates with other services such as AWS IoT Core and AWS IoT Analytics to quickly detect events and gain unique insights. IoT Events automatically generate alerts and actions in response to events based on defined logic to expedite troubleshooting, reduce maintenance costs and improve operational efficiency.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;h4&gt;AWS IoT Things Graph&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;AWS IoT Things Graph is a service that enables you to build IoT applications by enabling visual connections between various devices and web services. Today, applications are designed with a variety of web tools and services to automate tasks in a variety of use cases such as smart home, industrial automation, and enterprise energy management. Currently, there is no widely accepted standard that makes it difficult for developers to interconnect devices from different manufacturers and connect to web services. This requires developers to write a lot of code to connect their web services to any device they need to use the Internet of Things. This tool provides an advanced, visual versioning interface for connecting and controlling interactions between devices and web services, so you can quickly build IoT applications. For example, a commercial agricultural program can define interactions between humidity sensors and temperature sensors and fog cloud weather data for automated irrigation. It represents tools and services that use pre-built, reusable components called models, hiding sub-details such as protocols and interfaces, and combining them into complex working processes.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;AWS IoT solutions&lt;/h2&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;AWS IoT Solution Repository&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There are billions of devices in homes, factories, oil wells, hospitals, cars, and thousands of other places. As devices grow, more solutions are needed to connect devices and collect, store, and analyze device data. AWS IoT provides the preconfigured solutions, tutorials, and reference architectures in the &lt;a href=&quot;https://aws.amazon.com/iot/solutions/?nc=sn&amp;amp;loc=3&amp;amp;dn=1&amp;amp;iot-solution-repository-cards.sort-by=item.additionalFields.headline&amp;amp;iot-solution-repository-cards.sort-order=asc&amp;amp;awsf.iot-solution-repository-filter-industry=*all&amp;amp;awsf.iot-solution-repository-filter-products=*all&amp;amp;awsf.iot-solution-repository-filter-usecase=*all&amp;amp;awsf.iot-solution-repository-filter-solution-type=*all&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Solution Repository&lt;/a&gt; to get you started with the most popular IoT applications across industries right away.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h4&gt;AWS IoT for the Edge&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Building a successful IoT solution requires tens of billions of devices installed in factory homes and offices, oil fields and fields, airplanes, ships, and automobiles. AWS IoT services allow you to act intelligently by leveraging data generated by IoT Edge devices.&amp;nbsp;AWS offers a variety of high-end device services. AWS IoT Greengrass seamlessly extends AWS to high-end devices, enabling you to use the cloud for ongoing management, analytics, and storage while working with locally generated data. FreeRTOS is an open-source, real-time operating system for microcontrollers that facilitates programming, implementation, security, connectivity, and management of small, low-power devices. AWS IoT Device Tester is an IoT device test automation tool that you can use to verify that your device is running FreeRTOS or AWS IoT Greengrass and communicating with AWS IoT services.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h4&gt;Industrial Internet of Things&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Industrial IoT (IIoT) connects machines, cloud computing, analytics, and people to improve the performance and efficiency of industrial processes. With IIoT, manufacturing companies are digitizing their processes, shaping companies in transition, improving performance and productivity, and costly companies operating in a variety of industries such as manufacturing, energy, and agriculture. Transportation and facilities participating in IoT projects connect billions of devices. It is used in a variety of applications such as quality forecasting, maintenance analysis, asset monitoring, and process optimization&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h4&gt;AWS IoT for the Connected Home&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As the use of connected home devices continues to grow, more and more data is moving to the cloud as the latest IoT and machine learning technologies bring new innovations to connected home applications.&amp;nbsp;AWS IoT keeps you away from maintaining a necessary infrastructure to collect, process, analyze, and respond to data generated that can be used by connected home devices. This allows us to focus on developing solutions and experiences that add value to both your business and customers and create a new class of connected home applications that interact with the real world.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h4&gt;AWS IoT and Amazon Alexa&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;AWS IoT allows you to create connected home products quickly and easily at a low cost. To further enhance the customer experience, you can easily integrate connected products with Alexa and allow customers to control their devices with voice commands.&amp;nbsp;The Alexa Voice Services integration for AWS IoT Core enables Alexa Voice to be used across all types of paired devices in a cost-effective way.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h4&gt;AWS IoT - Migrations&lt;/h4&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Whatever you use, AWS makes your migration faster and easier. As the IoT industry continues to evolve and bring new innovations to IoT, customers will have the opportunity to create architectures and operating systems. You can improve connectivity and enable IoT devices. AWS has also helped customers such as LG, Traeger Grills, Belkin, Centrica Hive, and Weissbeerger make the faster and easier transition from IoT systems or third-party platforms. These customers migrate to take advantage of the security, scalability, reliability, breadth, and depth of AWS IoT services.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This post is to share an overview of IoT with AWS cloud technologies and wake you up to see some extra features that legacy IoT platforms do not provide. We have covered lots of stuff today and hope you grab some knowledge on AWS IoT through the post. If you have any questions about the AWS IoT or any suggestions that you want to make, please feel free to comment in the comment section below. We will meet you again with this kind of useful topic. Stay tuned!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;References&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://aws.amazon.com/iot/?nc=sn&amp;amp;loc=0&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/7971066040427659440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/06/an-introduction-to-internet-of-things-with-aws.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/7971066040427659440'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/7971066040427659440'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/06/an-introduction-to-internet-of-things-with-aws.html' title='An introduction to Internet of Things (IoT) with AWS'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-3_U0IAKuZXM/YMEYj_WZVEI/AAAAAAAAApc/K49gBBRaZV0g_UL5uXPzHvdB-oZBwHlLACLcBGAsYHQ/s72-w640-h448-c/iot%2Bwith%2Baws.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-4736567780709089407</id><published>2021-06-05T21:30:00.006-07:00</published><updated>2021-06-12T04:57:54.551-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>AWS IAM user creation</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/T4PYm8iunxQ&quot; width=&quot;320&quot; youtube-src-id=&quot;T4PYm8iunxQ&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Step by step video guide for AWS IAM user creation&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Hello everyone! Welcome to the Agnasarp! Nowadays software development is heavily dependent on the cloud. Amazon AWS is a super cool platform to learn and use for commercial applications at reasonable rates. Therefore, knowledge about AWS and its products will be really useful for every one of us. Then we can create an AWS account and use it completely free for one year under its free tier. After signing up, you will have a root account so, as the first step, you need to create an IAM user since the root account has all privileges. And you should never ever share the root account with other users. This post will guide you to create an AWS IAM user step by step.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Step 1: Log in to the management console&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;First, you have to log in to the AWS management console. You can use the root account or an IAM user that has user creation privileges.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-GNuNhxjXCcc/YLxnyFO2zUI/AAAAAAAAAnY/16sUKZf8KpwJet30hV8y3Ygb2Rv_vDBbACLcBGAsYHQ/agnasarp%2Bmanagement%2Bconsole%2Burl.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-GNuNhxjXCcc/YLxnyFO2zUI/AAAAAAAAAnY/16sUKZf8KpwJet30hV8y3Ygb2Rv_vDBbACLcBGAsYHQ/w640-h360/agnasarp%2Bmanagement%2Bconsole%2Burl.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Management console URL&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Here, we are using an IAM user that has admin permissions.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-MV5ijZ5Ng0c/YLxn0EWhHrI/AAAAAAAAAnc/tHEWjWzGfasqhXDYJenQkTLAQEZHgKMlwCLcBGAsYHQ/aws%2Bmanagement%2Bconsole%2Blogin%2Bpage.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-MV5ijZ5Ng0c/YLxn0EWhHrI/AAAAAAAAAnc/tHEWjWzGfasqhXDYJenQkTLAQEZHgKMlwCLcBGAsYHQ/w640-h360/aws%2Bmanagement%2Bconsole%2Blogin%2Bpage.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;AWS management console login page&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 2: Search for IAM in the search box&lt;/h3&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-A9mQP8_7MrY/YLxn2XUC-tI/AAAAAAAAAng/DxKEe7zHuQEav3sFrmJzoV_p--PZ7ZZdQCLcBGAsYHQ/aws%2Bmanagement%2Bconsole.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-A9mQP8_7MrY/YLxn2XUC-tI/AAAAAAAAAng/DxKEe7zHuQEav3sFrmJzoV_p--PZ7ZZdQCLcBGAsYHQ/w640-h360/aws%2Bmanagement%2Bconsole.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;AWS management console&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 3: Click on Users&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-l1t8aa0li5s/YLxn6ZB73PI/AAAAAAAAAnk/jyJbf8t-yaEyypo-XTrqhe57081lEAAzACLcBGAsYHQ/iam%2Bdashboard%2Bwith%2Bglobal%2Bscope.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-l1t8aa0li5s/YLxn6ZB73PI/AAAAAAAAAnk/jyJbf8t-yaEyypo-XTrqhe57081lEAAzACLcBGAsYHQ/w640-h360/iam%2Bdashboard%2Bwith%2Bglobal%2Bscope.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IAM dashboard with global scope&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 4: Click on Add User button&lt;/h3&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-2FFD8WmqvJk/YLxn89Wl4pI/AAAAAAAAAno/1hFKgjfxRxgHwDrgXDzwu3b4hp1XUqJ6QCLcBGAsYHQ/iam%2Badd%2Buser.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-2FFD8WmqvJk/YLxn89Wl4pI/AAAAAAAAAno/1hFKgjfxRxgHwDrgXDzwu3b4hp1XUqJ6QCLcBGAsYHQ/w640-h360/iam%2Badd%2Buser.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Add&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;IAM&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;user&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 5: Type user details&lt;/h3&gt;&lt;div&gt;It is better to select both Programmatic access and AWS Management Console access in the Access type.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-c5QWmgcfxw4/YLxn_hMF7lI/AAAAAAAAAns/SoP_w7G8AV86SKn_5dC5KF4O61VI69_0QCLcBGAsYHQ/iam%2Bset%2Bnew%2Buser%2Bdetails.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-c5QWmgcfxw4/YLxn_hMF7lI/AAAAAAAAAns/SoP_w7G8AV86SKn_5dC5KF4O61VI69_0QCLcBGAsYHQ/w640-h360/iam%2Bset%2Bnew%2Buser%2Bdetails.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Set new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;IAM&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;user details&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 6: Set permissions for the user&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-ok-T1MQUv4o/YLxoCNpa02I/AAAAAAAAAnw/NDLkpDWTQZ0FomZnbM2MxY3MO3qq0-TCgCLcBGAsYHQ/iam%2Bset%2Bpermission%2Bto%2Buser.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-ok-T1MQUv4o/YLxoCNpa02I/AAAAAAAAAnw/NDLkpDWTQZ0FomZnbM2MxY3MO3qq0-TCgCLcBGAsYHQ/w640-h360/iam%2Bset%2Bpermission%2Bto%2Buser.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Set the permission of the&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;IAM&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;user&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 7: Set tags for the user (optional)&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;This is optional and useful to quickly get an idea about the user if we have multiple users in the user list.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-uInIWBiewKo/YLxoGb6-XwI/AAAAAAAAAn0/Qp4z9RN88WQ1XK7XgUAJuL6u0vb6JVqHgCLcBGAsYHQ/iam%2Badd%2Btags%2Bto%2Buser.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-uInIWBiewKo/YLxoGb6-XwI/AAAAAAAAAn0/Qp4z9RN88WQ1XK7XgUAJuL6u0vb6JVqHgCLcBGAsYHQ/w640-h360/iam%2Badd%2Btags%2Bto%2Buser.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Add tags to IAM user&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 8: Download user credentials&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Need to download and securely save the new user credential in the csv file.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-x6iXsvF_FzU/YLxoIpY-RJI/AAAAAAAAAn4/NpHMG9uMAsE2SzqlrWBeDqqNlIvM1kRmQCLcBGAsYHQ/iam%2Bnew%2Buser%2Bcreation%2Bsuccess.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-x6iXsvF_FzU/YLxoIpY-RJI/AAAAAAAAAn4/NpHMG9uMAsE2SzqlrWBeDqqNlIvM1kRmQCLcBGAsYHQ/w640-h360/iam%2Bnew%2Buser%2Bcreation%2Bsuccess.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;New IAM successful user creation&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 9: Check user list&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-FOPZupxS5UU/YLxoKlevWdI/AAAAAAAAAoA/aQZhzRb4zvUk9T_0wk6WR0xGg6L9AS0mwCLcBGAsYHQ/iam%2Buser%2Blist.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-FOPZupxS5UU/YLxoKlevWdI/AAAAAAAAAoA/aQZhzRb4zvUk9T_0wk6WR0xGg6L9AS0mwCLcBGAsYHQ/w640-h360/iam%2Buser%2Blist.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IAM user list&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 10: Check Permission, Groups, Tags, and Security credentials, etc. of the new user&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;We can check user permissions, groups, tags, security credentials, and access advisor from each tab as in the below images.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-LkLnUXRYHfQ/YLxopItuMBI/AAAAAAAAAoU/oxDZTN2AgVc-yz6i4foMxCmAnnMpvZY8ACLcBGAsYHQ/iam%2Buser%2Bpermission.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-LkLnUXRYHfQ/YLxopItuMBI/AAAAAAAAAoU/oxDZTN2AgVc-yz6i4foMxCmAnnMpvZY8ACLcBGAsYHQ/w640-h360/iam%2Buser%2Bpermission.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IAM user - permission&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-XZx7wR7oirk/YLxotOWYXXI/AAAAAAAAAoY/sh9HY9E3DVME5VM-zTCUTvIXmVuNBlvtwCLcBGAsYHQ/iam%2Buser%2Bgroups.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-XZx7wR7oirk/YLxotOWYXXI/AAAAAAAAAoY/sh9HY9E3DVME5VM-zTCUTvIXmVuNBlvtwCLcBGAsYHQ/w640-h360/iam%2Buser%2Bgroups.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IAM user - groups&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-N5Vk2G6lSlA/YLxowSzpOCI/AAAAAAAAAoc/MTOAvzfjpBQ5E37CGzX32qIfe0UGm3rywCLcBGAsYHQ/iam%2Buser%2Btags.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-N5Vk2G6lSlA/YLxowSzpOCI/AAAAAAAAAoc/MTOAvzfjpBQ5E37CGzX32qIfe0UGm3rywCLcBGAsYHQ/w640-h360/iam%2Buser%2Btags.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IAM user - tags&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-qftr-aoOYaY/YLxozGFxptI/AAAAAAAAAog/y2bBmPE9QCUmxMFrj9roOG0zR8N1WY1GgCLcBGAsYHQ/iam%2Bsecurity%2Bcredentials.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-qftr-aoOYaY/YLxozGFxptI/AAAAAAAAAog/y2bBmPE9QCUmxMFrj9roOG0zR8N1WY1GgCLcBGAsYHQ/w640-h360/iam%2Bsecurity%2Bcredentials.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;IAM user - security credentials&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If we open a new tab with the console sign-in URL in the security credentials, the existing page will be logged out automatically&amp;nbsp;as below.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-N82Oyf7kGSA/YLxo0_jz2gI/AAAAAAAAAok/sekvo23UhZ0zuaxlygOyyRlArqeZq463wCLcBGAsYHQ/signing%2Bout%2Bfrom%2Bprevious%2Bpage.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-N82Oyf7kGSA/YLxo0_jz2gI/AAAAAAAAAok/sekvo23UhZ0zuaxlygOyyRlArqeZq463wCLcBGAsYHQ/w640-h360/signing%2Bout%2Bfrom%2Bprevious%2Bpage.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Automatic signing out from the previous page&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 11: Log in to the management console with new user credentials&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-pEjLj7GF7nk/YLxo3tG6rCI/AAAAAAAAAoo/7wd_xwp7CN0k5BoXZpM47FGINdXT9mQDwCLcBGAsYHQ/iam%2Bnew%2Buser%2Blogin.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-pEjLj7GF7nk/YLxo3tG6rCI/AAAAAAAAAoo/7wd_xwp7CN0k5BoXZpM47FGINdXT9mQDwCLcBGAsYHQ/w640-h360/iam%2Bnew%2Buser%2Blogin.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;New IAM user login&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 12: Reset the password of the new user&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Since we put a tick on autogenerated password in the user creation, the user has to reset the password at the first login as below.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/--6jX8W_P8oE/YLxo6N1z1iI/AAAAAAAAAos/kx1hgA_mREMldr40htA4f29YrZOQef2VQCLcBGAsYHQ/iam%2Bnew%2Busder%2Bpassword%2Breset.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/--6jX8W_P8oE/YLxo6N1z1iI/AAAAAAAAAos/kx1hgA_mREMldr40htA4f29YrZOQef2VQCLcBGAsYHQ/w640-h360/iam%2Bnew%2Busder%2Bpassword%2Breset.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;New IAM password reset&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;clear: both;&quot;&gt;Step 13: Use any AWS product&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-Od-gw_8gFkA/YLxo8VRVGjI/AAAAAAAAAow/MfkO5BcOoD0t5_Sm2zVVA5102yF7BOLHACLcBGAsYHQ/new%2Buser%2Bin%2Baws%2Bmanagement%2Bconsole.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-Od-gw_8gFkA/YLxo8VRVGjI/AAAAAAAAAow/MfkO5BcOoD0t5_Sm2zVVA5102yF7BOLHACLcBGAsYHQ/w640-h360/new%2Buser%2Bin%2Baws%2Bmanagement%2Bconsole.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;New user in AWS management console&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-uyCnp3GCPc4/YLxo_E0sSlI/AAAAAAAAAo4/UTrnHYZa4sIrsY_y3aFxVCyQee66KgO6ACLcBGAsYHQ/iam%2Bnew%2Buser%2Bin%2Biam%2Bdashboard.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-uyCnp3GCPc4/YLxo_E0sSlI/AAAAAAAAAo4/UTrnHYZa4sIrsY_y3aFxVCyQee66KgO6ACLcBGAsYHQ/w640-h360/iam%2Bnew%2Buser%2Bin%2Biam%2Bdashboard.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;New IAM user in IAM dashboard&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;That is all from today&#39;s post. If you have any questions about the process of this IAM user creation or any suggestion that you want to make, please feel free to comment in the comment section below. We will meet you again with this kind of valuable topic. Until then bye!&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/4736567780709089407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/06/aws-iam-user-creation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/4736567780709089407'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/4736567780709089407'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/06/aws-iam-user-creation.html' title='AWS IAM user creation'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/T4PYm8iunxQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-6035701789587728682</id><published>2021-06-02T01:30:00.012-07:00</published><updated>2021-06-12T03:02:03.552-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IT Security"/><title type='text'>Hey buddy, please help me to get rid of this! [Malware]</title><content type='html'>&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;/h3&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Malware&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-jiKL7aQm-Xg/YLfm9cnLpuI/AAAAAAAAAlA/14yjZ9FWoZYevRkByH4kZlNRo2wnp8CoQCLcBGAsYHQ/s1000/malware.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://1.bp.blogspot.com/-jiKL7aQm-Xg/YLfm9cnLpuI/AAAAAAAAAlA/14yjZ9FWoZYevRkByH4kZlNRo2wnp8CoQCLcBGAsYHQ/w640-h448/malware.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As we have already being interconnected via the Internet, definitely there has been a higher tendency to a malware infection at any time. Most of the time you might not be able to at least know whether your system is a victim of malware infection if you do not have prior knowledge of them. Therefore this post will provide you a few tips to maintain your system as secure as possible. Hope you will grab them and use them in your daily life as well as in your office life if you already work for a company. For a quick garb, we will show you all the tips and tricks in point format.&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Objective of the post&lt;/h3&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Recognize all most all forms of malware.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Identify signs of malware infection.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Understand how to remove malware from your device.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Reduce the risk of exposing your device to malware&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Importance&lt;/h3&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Defend against malware infections that threaten organizational security.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Mitigate personnel vulnerabilities with security awareness.&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Content&lt;/h3&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Introduction to malware&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Types of malware&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Detecting malware&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Preventing malware&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Removing malware&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Introduction to Malware&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Malware means malicious software.&lt;/li&gt;&lt;li&gt;Executes without your permission.&lt;/li&gt;&lt;li&gt;Tricks into thinking it is something else.&lt;/li&gt;&lt;li&gt;Works to remain unnoticed.&lt;/li&gt;&lt;li&gt;Compromise computer functions.&lt;/li&gt;&lt;li&gt;Steal data.&lt;/li&gt;&lt;li&gt;Bypass access controls.&lt;/li&gt;&lt;li&gt;Harms the host computer.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Tyes of Malware&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Common behaviors are stealing data, monitoring user activity, modifying user files. The first line of defense is being aware of their tactics.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Bot&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Bots are software programs created to automatically perform specific operations such as video gaming, internet auctions, online contests.&lt;/li&gt;&lt;li&gt;Bots can be used in botnets which is a collection of computers to be controlled by a third party for DDoS attacks, as spambots that render advertisements on websites, as web spiders that scrape server data, and for distributing malware disguised as popular search items on download sites.&lt;/li&gt;&lt;li&gt;Can protect websites with CAPTCHA test.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Virus&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Copying itself and spreading to other machines via infected programs.&lt;/li&gt;&lt;li&gt;Also spreads via script files, documents, and cross-site scripting vulnerabilities in web apps.&lt;/li&gt;&lt;li&gt;Steal info, harm host computers, and networks, create botnets, steal money, render advertisements, and more.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trojan&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;A Trojan distinguishes itself as a normal file or program to trick users into downloading and installing malware. It is typically bundled with games.&lt;/li&gt;&lt;li&gt;It can give a malicious party remote access to an infected computer.&lt;/li&gt;&lt;li&gt;Once the attacker has access to an infected computer, it is possible for the attacker to steal data (logins, financial data, even electronic money), install more malware, modify files, monitor user activity (screen watching, keylogging, etc) use the computer in botnets, and anonymize internet activity by the attacker.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Ransomware&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Demands ransom while holding a computer system captive.&lt;/li&gt;&lt;li&gt;Restricts the computer owner by encrypting files on the hard drive or locking down the system and displaying messages that are intended to force the user to pay the malware creator to remove the restrictions and regain access to their computers.&lt;/li&gt;&lt;li&gt;Ransomware typically spreads like a normal worm ending up on a computer via a downloaded file or through some other vulnerability in a network service.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;RAT&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Stands for Remote Access Trojan.&lt;/li&gt;&lt;li&gt;It has a back door opened for the administrative control of the target computer.&lt;/li&gt;&lt;li&gt;Attached with games and email attachments&lt;/li&gt;&lt;li&gt;The intruder may use the victim to distribute RATs to establish a botnet.&lt;/li&gt;&lt;li&gt;As a RAT enables administrative control, it makes it possible for the intruder to do the following.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Monitor user behavior via keyloggers&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Access confidential information&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Activate the system&#39;s webcam and start recording.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Take screenshots&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Distribute viruses and other malware&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Format drives.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;Delete, download, or modify files and file systems.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Worm&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Worms spread over computer networks by exploiting operating system vulnerabilities.&lt;/li&gt;&lt;li&gt;Worms typically cause harm to their host networks by consuming bandwidth and overloading web servers.&lt;/li&gt;&lt;li&gt;It is a type of virus and it has the ability to self-replicate and spread independently but viruses rely on human activity to spread.&lt;/li&gt;&lt;li&gt;Spread by sending mass emails with infected attachments to users&#39; contacts.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Detecting Malware&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Detecting malware is not an easy task. Anti-virus software is rarely 100% accurate at detecting malware because malware is designed to self-update and continually hides its presence whenever they start getting detected.&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;The computer is running slower than usual.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Pop-ups that ask you to download antivirus software or offer freebies.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Computer has been crashing or freezing lately&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Antivirus software and firewalls have been disabled without your consent&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Emails/messages being sent automatically without the user&#39;s knowledge&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Preventing Malware&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: medium; font-weight: normal;&quot;&gt;Prevention is better than cure. As malware is getting harder to detect and new threats are seen on regular basis, you must be extra cautious in reducing the risk of getting malware attacks on your computer. Listed below are a few key recommendations to prevent malware.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Install anti-virus, perform scheduled virus scanning and keep virus signature up-to-date.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Keep your operating system current.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Secure your network.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Run a virus scan if your computer is running slower than usual.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Do not click on links, pop-ups, or download files from unsolicited sources.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Enable firewalls.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Removing Malware&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: medium; font-weight: normal;&quot;&gt;Once your computer is infected with malware, you must remove it as soon as you realize it happens. Listed below are some simple steps in removing malware.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Back up all files and data on our computer.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Disconnect your computer from the Internet.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Remove CDs and DVDs, and unplug USB drives from the computer.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Scan the computer first in normal mode.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Scan the computer in safe mode with networking.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Delete temporary files by using the &quot;Disk Cleanup&quot; utility.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Run virus scanner.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Restart the computer normally.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Confirm the results of the anti-malware scan.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/6035701789587728682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/06/Hey-buddy-please-help-me-to-get-rid-of-this-Malware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6035701789587728682'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6035701789587728682'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/06/Hey-buddy-please-help-me-to-get-rid-of-this-Malware.html' title='Hey buddy, please help me to get rid of this! [Malware]'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-jiKL7aQm-Xg/YLfm9cnLpuI/AAAAAAAAAlA/14yjZ9FWoZYevRkByH4kZlNRo2wnp8CoQCLcBGAsYHQ/s72-w640-h448-c/malware.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-2389823096423840559</id><published>2021-05-29T01:30:00.744-07:00</published><updated>2021-06-12T04:57:40.252-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="ML"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>AWS DeepRacer League - a retrospective after the race day</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Hello friends! we have come with another useful topic as usual, OK have you heard about DeepRacer? 🤔🤔🤔 Don&#39;t worry if you haven&#39;t yet. Today we will go through the DeepRacer event with a past result deeply. DeepRacer is a tool created by Amazon AWS to learn machine learning (ML) easily. They use a special learning type called Reinforcement Learning. We can build applications for vehicles for autonomous driving in both virtual and physical environments. All the information is there in the&amp;nbsp;&lt;a href=&quot;https://docs.aws.amazon.com/deepracer/latest/developerguide/awsracerdg.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;AWS DeepRacer Developer Guide&lt;/a&gt;. Here we are going to share our experiences we have got in the training period and the virtual race day, they may be good or bad but will be beneficial for future racers.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/ASiow_qs0W8&quot; width=&quot;320&quot; youtube-src-id=&quot;ASiow_qs0W8&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;AWS DeepRacer League&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This is the introduction page created for DeepRacer and it quickly gives you an idea about Reinforcement Learning in the How it works section. The page has all the links to functions that we need to use in the training for the league.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-riDDoUCxd5U/YLECcoJSSlI/AAAAAAAAAh4/x-db_Vp2uxYB2V-XmBu1Y-wVT7JZWy8FwCLcBGAsYHQ/s1600/deepracer-console.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;769&quot; data-original-width=&quot;1600&quot; height=&quot;308&quot; src=&quot;https://1.bp.blogspot.com/-riDDoUCxd5U/YLECcoJSSlI/AAAAAAAAAh4/x-db_Vp2uxYB2V-XmBu1Y-wVT7JZWy8FwCLcBGAsYHQ/w640-h308/deepracer-console.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DeepRacer console&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This page is also a little bit informative for DeepRacer Virtual Circuit.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-LJWZ1a5k8iA/YLEC-K8UQgI/AAAAAAAAAiA/0UKnRzSbjD46zAc7unAA7mksbbeG5H5-ACLcBGAsYHQ/s1328/deepracer-virtual-circuit.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;733&quot; data-original-width=&quot;1328&quot; height=&quot;354&quot; src=&quot;https://1.bp.blogspot.com/-LJWZ1a5k8iA/YLEC-K8UQgI/AAAAAAAAAiA/0UKnRzSbjD46zAc7unAA7mksbbeG5H5-ACLcBGAsYHQ/w640-h354/deepracer-virtual-circuit.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Virtual circuit&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We have to deal with the open community race created for our company hereon. It is informative and says about the day remaining for the main event/the race day, race type here it is Time-trial, level, sensors, track details here it is Bowtie Track, our rank, and the details about the top racer.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-GU_VbcMUPMY/YLEFBzndMwI/AAAAAAAAAiI/bRNRW2AqmbAsMPKEcwlZOa5va-3jxC_UACLcBGAsYHQ/s1289/deepracer-community-races.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;733&quot; data-original-width=&quot;1289&quot; height=&quot;364&quot; src=&quot;https://1.bp.blogspot.com/-GU_VbcMUPMY/YLEFBzndMwI/AAAAAAAAAiI/bRNRW2AqmbAsMPKEcwlZOa5va-3jxC_UACLcBGAsYHQ/w640-h364/deepracer-community-races.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Community races&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now we can get started with the hands-on session for the preparation or training for the virtual race with the provided features in the DeepRacer console.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-H922Ys_C4oc/YLEFl7H3GmI/AAAAAAAAAiQ/boni65MYzAYszuxEKT1pdvXHZhxvOZuCQCLcBGAsYHQ/s1390/deepracer-getstarted.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;733&quot; data-original-width=&quot;1390&quot; height=&quot;338&quot; src=&quot;https://1.bp.blogspot.com/-H922Ys_C4oc/YLEFl7H3GmI/AAAAAAAAAiQ/boni65MYzAYszuxEKT1pdvXHZhxvOZuCQCLcBGAsYHQ/w640-h338/deepracer-getstarted.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Get started&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Make your car&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;What we need to do at first in the console, we need to have an agent. Here it is a 1/18th scaled car. In the &lt;b&gt;Your garage&lt;/b&gt; section, all cars that are already built are listed and it also provides a button to create new cars as well.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-POSnV4Mm7nA/YLEHFPNA9uI/AAAAAAAAAiY/-mQbgnSzkbggxjZ6xYNO4tC1c1vTKjrZwCLcBGAsYHQ/s1410/deepracer-garage.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;733&quot; data-original-width=&quot;1410&quot; height=&quot;332&quot; src=&quot;https://1.bp.blogspot.com/-POSnV4Mm7nA/YLEHFPNA9uI/AAAAAAAAAiY/-mQbgnSzkbggxjZ6xYNO4tC1c1vTKjrZwCLcBGAsYHQ/w640-h332/deepracer-garage.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: left;&quot;&gt;Garage&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;If we click the button it will ask for all the specifications, action space, and personalization. Here DeepRacer team will recommend selecting the radio button &lt;b&gt;Camera &lt;/b&gt;only in Sensor modification.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-99LOwEvxdTA/YLEV1F8bAhI/AAAAAAAAAig/3BXaYUOtENYP__EX7jqqzS1TqwInXv09ACLcBGAsYHQ/s1408/deepracer-buildcar.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;735&quot; data-original-width=&quot;1408&quot; height=&quot;334&quot; src=&quot;https://1.bp.blogspot.com/-99LOwEvxdTA/YLEV1F8bAhI/AAAAAAAAAig/3BXaYUOtENYP__EX7jqqzS1TqwInXv09ACLcBGAsYHQ/w640-h334/deepracer-buildcar.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DeepRacer - build a car&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The next step is to set up the action space for the vehicle. Here also DeepRacer team has recommended choosing &lt;b&gt;Discrete &lt;/b&gt;as the Action space type. It is better to keep the maximum steering angle that 30 degrees or it is up to you as per your requirement. Steering granularity defines the possible angles of the front wheels. As per the below image, we can have 5 different angles for the wheels for the steering angle granularity 5 as {-30, -15, 0, 15, 30}. If it is 3, the number of angles will be 3 as {-30, 0, 30}, and if it is 7, the angles will be {-30, -20, -10, 0, 10, 20, 30}. Then it asks about the max speed of the car, so here we just keep it as 3 but the DeepRacer team recommended entering the max value, here it is 4. At last, it asks about the granularity of the speed and we keep it as 2, ow we can have 2-speed variations as 3m/s and 1.5m/s.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-gt08ljukDFk/YLEWO3RgI3I/AAAAAAAAAio/P8HcDieaDxQaDEmSdk55GduxJducmD2eQCLcBGAsYHQ/s1410/action-space.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;735&quot; data-original-width=&quot;1410&quot; height=&quot;334&quot; src=&quot;https://1.bp.blogspot.com/-gt08ljukDFk/YLEWO3RgI3I/AAAAAAAAAio/P8HcDieaDxQaDEmSdk55GduxJducmD2eQCLcBGAsYHQ/w640-h334/action-space.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Action space&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As per the aforementioned steering angles and speed values we got the below action list which elaborates all possible states of the vehicle.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-TMG3sbieseU/YLEWt75zn2I/AAAAAAAAAiw/j0VbmJtvRhsR7389s2Wwm4QVk5GAKr4nwCLcBGAsYHQ/s914/action-list.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;508&quot; data-original-width=&quot;914&quot; height=&quot;356&quot; src=&quot;https://1.bp.blogspot.com/-TMG3sbieseU/YLEWt75zn2I/AAAAAAAAAiw/j0VbmJtvRhsR7389s2Wwm4QVk5GAKr4nwCLcBGAsYHQ/w640-h356/action-list.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Action list&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We can give it a name and a color as the last step.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-Rn_h2u3HTj4/YLEaK16co7I/AAAAAAAAAjA/kfyLNBo0I4MJ0fOd0Q97YK_FUzlUb5FxwCLcBGAsYHQ/s1430/c8.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;739&quot; data-original-width=&quot;1430&quot; height=&quot;330&quot; src=&quot;https://1.bp.blogspot.com/-Rn_h2u3HTj4/YLEaK16co7I/AAAAAAAAAjA/kfyLNBo0I4MJ0fOd0Q97YK_FUzlUb5FxwCLcBGAsYHQ/w640-h330/c8.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Customize the car&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Make you model&lt;/h3&gt;&lt;div&gt;We just finished building our car, the next step is to create a model to train. The below page lists all the available models that we have created and a button to create a new model as well.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-gSEuSKt-_dA/YLEYiEZacAI/AAAAAAAAAi4/kzVqmTz4FvMW4Bm_8RPB_byBxGGEjXHfQCLcBGAsYHQ/s1413/deepracer-models.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;735&quot; data-original-width=&quot;1413&quot; height=&quot;332&quot; src=&quot;https://1.bp.blogspot.com/-gSEuSKt-_dA/YLEYiEZacAI/AAAAAAAAAi4/kzVqmTz4FvMW4Bm_8RPB_byBxGGEjXHfQCLcBGAsYHQ/w640-h332/deepracer-models.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Models&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If we select the button to create a new model, we have to provide all the details about our new model. At first, we need to give it a name and a description (optional) and select a track. DeepRacer team recommended choosing Bowtie Track since we have to play the virtual race day on the same track.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-xwa0Ie_wVOE/YLE6AHD7PJI/AAAAAAAAAjI/Q5evvbaw-WAX--4gHVrFyLVsQ28FKDDnwCLcBGAsYHQ/s3012/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_04_31.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3012&quot; data-original-width=&quot;1044&quot; height=&quot;1867&quot; src=&quot;https://1.bp.blogspot.com/-xwa0Ie_wVOE/YLE6AHD7PJI/AAAAAAAAAjI/Q5evvbaw-WAX--4gHVrFyLVsQ28FKDDnwCLcBGAsYHQ/w647-h1867/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_04_31.webp&quot; width=&quot;647&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Create model - model name and environment&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;And the race type is Time trial, again the DeepRacer team asked to select that. Most of the time we keep all the default values in the Training algorithm and hyperparameters section but if you want you can fine-tune them to get a much better result. We can select a car from the garage as the agent for the model.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-xOP0IRqlLdk/YLE622Vu41I/AAAAAAAAAjQ/I7xsjMUzNTI1J8s0Txa9m8cQ7ofMGlyvwCLcBGAsYHQ/s1869/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_03_53.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1869&quot; data-original-width=&quot;1600&quot; height=&quot;758&quot; src=&quot;https://1.bp.blogspot.com/-xOP0IRqlLdk/YLE622Vu41I/AAAAAAAAAjQ/I7xsjMUzNTI1J8s0Txa9m8cQ7ofMGlyvwCLcBGAsYHQ/w648-h758/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_03_53.webp&quot; width=&quot;648&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Create model - training type, training algorithm, and agent&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As the last step, we can define a reward function for the model. This is the most tricky part of the model creating. We can remain the default reward function as it is or alter them. Here we have used custom reward functions. We can define the training time in minutes as the Stop condition. 2 to 4 hours is the best training time as per many past racers. but we can go up to 24 hours. By the way, we trained 8 and 10 hours our best models.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-X5aJ3EgnLdI/YLE7W8P31mI/AAAAAAAAAjY/eUVjqTQ7a1QFCLFIFEaDTjxK6_xf4go7QCLcBGAsYHQ/s1862/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_06_57.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1862&quot; data-original-width=&quot;1600&quot; height=&quot;748&quot; src=&quot;https://1.bp.blogspot.com/-X5aJ3EgnLdI/YLE7W8P31mI/AAAAAAAAAjY/eUVjqTQ7a1QFCLFIFEaDTjxK6_xf4go7QCLcBGAsYHQ/w642-h748/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_06_57.webp&quot; width=&quot;642&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Create model - customize reward function&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Reward functions&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The reward function is the key part of our model training because though the are few other configurable values that we can control to get a better result, this is the main algorithm that we use in model training. As you can see, there are few functions already provided by AWS&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;1] Time trial - follow the center line (Default)&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;def reward_function(params):&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    Example of rewarding the agent to follow center line&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    &lt;br /&gt;    # Read input parameters&lt;br /&gt;    track_width = params[&#39;track_width&#39;]&lt;br /&gt;    distance_from_center = params[&#39;distance_from_center&#39;]&lt;br /&gt;    &lt;br /&gt;    # Calculate 3 markers that are at varying distances away from the center line&lt;br /&gt;    marker_1 = 0.1 * track_width&lt;br /&gt;    marker_2 = 0.25 * track_width&lt;br /&gt;    marker_3 = 0.5 * track_width&lt;br /&gt;    &lt;br /&gt;    # Give higher reward if the car is closer to center line and vice versa&lt;br /&gt;    if distance_from_center &amp;lt;= marker_1:&lt;br /&gt;        reward = 1.0&lt;br /&gt;    elif distance_from_center &amp;lt;= marker_2:&lt;br /&gt;        reward = 0.5&lt;br /&gt;    elif distance_from_center &amp;lt;= marker_3:&lt;br /&gt;        reward = 0.1&lt;br /&gt;    else:&lt;br /&gt;        reward = 1e-3  # likely crashed/ close to off track&lt;br /&gt;    &lt;br /&gt;    return float(reward)&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;2] Time trial - stay inside the two borders&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;def reward_function(params):&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    Example of rewarding the agent to stay inside the two borders of the track&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    &lt;br /&gt;    # Read input parameters&lt;br /&gt;    all_wheels_on_track = params[&#39;all_wheels_on_track&#39;]&lt;br /&gt;    distance_from_center = params[&#39;distance_from_center&#39;]&lt;br /&gt;    track_width = params[&#39;track_width&#39;]&lt;br /&gt;    &lt;br /&gt;    # Give a very low reward by default&lt;br /&gt;    reward = 1e-3&lt;br /&gt;&lt;br /&gt;    # Give a high reward if no wheels go off the track and&lt;br /&gt;    # the agent is somewhere in between the track borders&lt;br /&gt;    if all_wheels_on_track and (0.5*track_width - distance_from_center) &amp;gt;= 0.05:&lt;br /&gt;        reward = 1.0&lt;br /&gt;&lt;br /&gt;    # Always return a float value&lt;br /&gt;    return float(reward)&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;3] Time trial - prevent zig-zag&lt;/h4&gt;&lt;div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;def reward_function(params):&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    Example of penalize steering, which helps mitigate zig-zag behaviors&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    &lt;br /&gt;    # Read input parameters&lt;br /&gt;    distance_from_center = params[&#39;distance_from_center&#39;]&lt;br /&gt;    track_width = params[&#39;track_width&#39;]&lt;br /&gt;    steering = abs(params[&#39;steering_angle&#39;]) # Only need the absolute steering angle&lt;br /&gt;&lt;br /&gt;    # Calculate 3 markers that are at varying distances away from the center line&lt;br /&gt;    marker_1 = 0.1 * track_width&lt;br /&gt;    marker_2 = 0.25 * track_width&lt;br /&gt;    marker_3 = 0.5 * track_width&lt;br /&gt;&lt;br /&gt;    # Give higher reward if the agent is closer to center line and vice versa&lt;br /&gt;    if distance_from_center &amp;lt;= marker_1:&lt;br /&gt;        reward = 1&lt;br /&gt;    elif distance_from_center &amp;lt;= marker_2:&lt;br /&gt;        reward = 0.5&lt;br /&gt;    elif distance_from_center &amp;lt;= marker_3:&lt;br /&gt;        reward = 0.1&lt;br /&gt;    else:&lt;br /&gt;        reward = 1e-3  # likely crashed/ close to off track&lt;br /&gt;&lt;br /&gt;    # Steering penality threshold, change the number based on your action space setting&lt;br /&gt;    ABS_STEERING_THRESHOLD = 15&lt;br /&gt;&lt;br /&gt;    # Penalize reward if the agent is steering too much&lt;br /&gt;    if steering &amp;gt; ABS_STEERING_THRESHOLD:&lt;br /&gt;        reward *= 0.8&lt;br /&gt;&lt;br /&gt;    return float(reward)&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;4] Object avoidance and head-to-head - stay on one lane and not crashing (default for OA and h2h)&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;def reward_function(params):&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    Example of rewarding the agent to stay inside two borders&lt;br /&gt;    and penalizing getting too close to the objects in front&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;&lt;br /&gt;    all_wheels_on_track = params[&#39;all_wheels_on_track&#39;]&lt;br /&gt;    distance_from_center = params[&#39;distance_from_center&#39;]&lt;br /&gt;    track_width = params[&#39;track_width&#39;]&lt;br /&gt;    objects_distance = params[&#39;objects_distance&#39;]&lt;br /&gt;    _, next_object_index = params[&#39;closest_objects&#39;]&lt;br /&gt;    objects_left_of_center = params[&#39;objects_left_of_center&#39;]&lt;br /&gt;    is_left_of_center = params[&#39;is_left_of_center&#39;]&lt;br /&gt;&lt;br /&gt;    # Initialize reward with a small number but not zero&lt;br /&gt;    # because zero means off-track or crashed&lt;br /&gt;    reward = 1e-3&lt;br /&gt;&lt;br /&gt;    # Reward if the agent stays inside the two borders of the track&lt;br /&gt;    if all_wheels_on_track and (0.5 * track_width - distance_from_center) &amp;gt;= 0.05:&lt;br /&gt;        reward_lane = 1.0&lt;br /&gt;    else:&lt;br /&gt;        reward_lane = 1e-3&lt;br /&gt;&lt;br /&gt;    # Penalize if the agent is too close to the next object&lt;br /&gt;    reward_avoid = 1.0&lt;br /&gt;&lt;br /&gt;    # Distance to the next object&lt;br /&gt;    distance_closest_object = objects_distance[next_object_index]&lt;br /&gt;    # Decide if the agent and the next object is on the same lane&lt;br /&gt;    is_same_lane = objects_left_of_center[next_object_index] == is_left_of_center&lt;br /&gt;&lt;br /&gt;    if is_same_lane:&lt;br /&gt;        if 0.5 &amp;lt;= distance_closest_object &amp;lt; 0.8: &lt;br /&gt;            reward_avoid *= 0.5&lt;br /&gt;        elif 0.3 &amp;lt;= distance_closest_object &amp;lt; 0.5:&lt;br /&gt;            reward_avoid *= 0.2&lt;br /&gt;        elif distance_closest_object &amp;lt; 0.3:&lt;br /&gt;            reward_avoid = 1e-3 # Likely crashed&lt;br /&gt;&lt;br /&gt;    # Calculate reward by putting different weights on &lt;br /&gt;    # the two aspects above&lt;br /&gt;    reward += 1.0 * reward_lane + 4.0 * reward_avoid&lt;br /&gt;&lt;br /&gt;    return reward	&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But we used a customized algorithm in the training as below. Actually, we have tried out multiple algorithms and these are the best two out of them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Function that we used in the traning before the race day (model M20)&lt;/h4&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;import math&lt;br /&gt;&lt;br /&gt;def reward_function(params):    &lt;br /&gt;    progress = params[&#39;progress&#39;]&lt;br /&gt;    &lt;br /&gt;    # Read input variables&lt;br /&gt;    waypoints = params[&#39;waypoints&#39;]&lt;br /&gt;    closest_waypoints = params[&#39;closest_waypoints&#39;]&lt;br /&gt;    heading = params[&#39;heading&#39;]&lt;br /&gt;    &lt;br /&gt;    reward = 1.0&lt;br /&gt;        &lt;br /&gt;    if progress == 100:&lt;br /&gt;        reward += 100&lt;br /&gt;    &lt;br /&gt;    # Calculate the direction of the center line based on the closest waypoints&lt;br /&gt;    next_point = waypoints[closest_waypoints[1]]&lt;br /&gt;    prev_point = waypoints[closest_waypoints[0]]    &lt;br /&gt;&lt;br /&gt;    # Calculate the direction in radius, arctan2(dy, dx), the result is (-pi, pi) in radians&lt;br /&gt;    track_direction = math.atan2(next_point[1] - prev_point[1], next_point[0] - prev_point[0]) &lt;br /&gt;&lt;br /&gt;    # Convert to degree&lt;br /&gt;    track_direction = math.degrees(track_direction)    &lt;br /&gt;&lt;br /&gt;    # Calculate the difference between the track direction and the heading direction of the car&lt;br /&gt;    direction_diff = abs(track_direction - heading)    &lt;br /&gt;&lt;br /&gt;    # Penalize the reward if the difference is too large&lt;br /&gt;    DIRECTION_THRESHOLD = 10.0&lt;br /&gt;    &lt;br /&gt;    malus=1&lt;br /&gt;    &lt;br /&gt;    if direction_diff &amp;gt; DIRECTION_THRESHOLD:&lt;br /&gt;        malus=1-(direction_diff/50)&lt;br /&gt;        if malus&amp;lt;0 or malus&amp;gt;1:&lt;br /&gt;            malus = 0&lt;br /&gt;        reward *= malus&lt;br /&gt;    &lt;br /&gt;    return reward&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Function that we used in the race day (model M11)&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;import math&lt;br /&gt;&lt;br /&gt;def reward_function(params):&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;    Use square root for center line - ApiDragons-M11&lt;br /&gt;    &#39;&#39;&#39;&lt;br /&gt;	&lt;br /&gt;    track_width = params[&#39;track_width&#39;]&lt;br /&gt;    distance_from_center = params[&#39;distance_from_center&#39;]&lt;br /&gt;    speed = params[&#39;speed&#39;]&lt;br /&gt;    progress = params[&#39;progress&#39;]&lt;br /&gt;    all_wheels_on_track = params[&#39;all_wheels_on_track&#39;]&lt;br /&gt;    SPEED_TRESHOLD = 3    &lt;br /&gt;&lt;br /&gt;    reward = 1 - (distance_from_center / (track_width/2))**(4)&lt;br /&gt;&lt;br /&gt;    if reward &amp;lt; 0:&lt;br /&gt;        reward = 0    &lt;br /&gt;&lt;br /&gt;    if speed &amp;gt; SPEED_TRESHOLD:&lt;br /&gt;        reward *= 0.8        &lt;br /&gt;&lt;br /&gt;    if not (all_wheels_on_track):&lt;br /&gt;        reward = 0&lt;br /&gt;&lt;br /&gt;    if progress == 100:    &lt;br /&gt;        reward += 100        &lt;br /&gt;&lt;br /&gt;    return float(reward)&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Model training and evaluation&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This is one of our best models which has taken 8 hours to train. The model evaluation shows 100% completed 5 laps but it has taken a little longer than our other best model. It has taken around 15 seconds to complete a lap on the track. You can train 4 multiple models at the same time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-MA53YS45Nw8/YLH17mYTw0I/AAAAAAAAAkA/Ly_pDfKVAa8ts5JRyUH-jDnd5d8LEXJDQCLcBGAsYHQ/s2048/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_19_28.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1462&quot; height=&quot;904&quot; src=&quot;https://1.bp.blogspot.com/-MA53YS45Nw8/YLH17mYTw0I/AAAAAAAAAkA/Ly_pDfKVAa8ts5JRyUH-jDnd5d8LEXJDQCLcBGAsYHQ/w644-h904/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_19_28.webp&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;font-size: small; text-align: center;&quot;&gt;Model training and evaluation - M20&lt;/div&gt;&lt;div style=&quot;font-size: small; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We have another model M11, which reported the best lap time 11.141 seconds in the evaluation and 12.057 seconds in the leader board. But it had only 100% one completed lap in the evaluation.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-eR0Z60VlhWo/YLH2kPbcMGI/AAAAAAAAAkI/hAie7qPcZ1sideX5EMIEHelXpHhcZrKGQCLcBGAsYHQ/s2048/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_18_30.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1462&quot; height=&quot;905&quot; src=&quot;https://1.bp.blogspot.com/-eR0Z60VlhWo/YLH2kPbcMGI/AAAAAAAAAkI/hAie7qPcZ1sideX5EMIEHelXpHhcZrKGQCLcBGAsYHQ/w645-h905/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_18_30.webp&quot; width=&quot;645&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Model training and evaluation - M11&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We had just put our model for March Qualifier to get an idea and it secured the below rank 😆. But the track is different and this is not particularly designed for the March Qualifier so we didn&#39;t have to worry about it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-DD2-oREi-pY/YLH3at3-gdI/AAAAAAAAAkQ/e9yZgkTrzUA0lkeltpCsZqovFfB1MSmRACLcBGAsYHQ/s1610/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_53_33.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1610&quot; data-original-width=&quot;1600&quot; height=&quot;640&quot; src=&quot;https://1.bp.blogspot.com/-DD2-oREi-pY/YLH3at3-gdI/AAAAAAAAAkQ/e9yZgkTrzUA0lkeltpCsZqovFfB1MSmRACLcBGAsYHQ/w636-h640/screencapture-console-aws-amazon-deepracer-home-2021-03-25-11_53_33.webp&quot; width=&quot;636&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;March qualifier&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our M11 model secured 4th place out of 35 candidates on the leader board before the race day.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-ThHRZ2KYSgs/YLH5WXnlHFI/AAAAAAAAAkg/v1l_n8lqaksA6TPBB5Ua6p-ZbBWyjuh7ACLcBGAsYHQ/s1409/deepracer-myrank-highlighted.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;735&quot; data-original-width=&quot;1409&quot; height=&quot;334&quot; src=&quot;https://1.bp.blogspot.com/-ThHRZ2KYSgs/YLH5WXnlHFI/AAAAAAAAAkg/v1l_n8lqaksA6TPBB5Ua6p-ZbBWyjuh7ACLcBGAsYHQ/w640-h334/deepracer-myrank-highlighted.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Rank in the community race - before racing day&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This is the leader board in the virtual race day. As we have already mentioned this post is a retrospective for the event and we have identified few mistakes we had to corrected before the race day as listed below.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;We used 3m/s as the speed but we had to choose the max value, 4m/s for the action space.&lt;/li&gt;&lt;li&gt;We had used a longer period of time like 8, 10 hours as the training time but it is enough to train 2 to 4 hour for better results.&lt;/li&gt;&lt;li&gt;We did not trust default reward functions and always looked for a complex function but it is not correct, the results would be better if the reward function was a little bit simpler than that we have used.&lt;/li&gt;&lt;li&gt;We had just concerned about the best lap time in the leader board before the race day so we had selected model M11 for the race day. but it was not much stable. If we went with model M20 which has already shown a 5 100% completed laps, the final results would rather be joyful though it did not have a better lap time. Because it was a stable model that M11.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-91CS0Zz9WdU/YLJJWZo07sI/AAAAAAAAAk4/IGzSUhvtZuke-QPwWCCenb81Iu_nZ6eFQCLcBGAsYHQ/s791/screencapture-d3p8tw99wg8o1e-cloudfront-net-2021-03-26-17_22_51_1.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;655&quot; data-original-width=&quot;791&quot; height=&quot;530&quot; src=&quot;https://1.bp.blogspot.com/-91CS0Zz9WdU/YLJJWZo07sI/AAAAAAAAAk4/IGzSUhvtZuke-QPwWCCenb81Iu_nZ6eFQCLcBGAsYHQ/w640-h530/screencapture-d3p8tw99wg8o1e-cloudfront-net-2021-03-26-17_22_51_1.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Rank in the community race - racing day&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;However, it was a fun and energetic period of time because it was courageous us when we go up on the leader board. It motivated us to find another good reward function and set of hyperparameter values. We had addicted to training new models again and again before the race day. Hope this news about our experience will be beneficial for your future DeepRacer Leagues. That is all we have to share with you. We will meet you again with this kind of valuable topic. Until then bye bye!&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-reward-function-examples.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/2389823096423840559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/05/AWS-DeepRacer-League-a-retrospective-after-the-race-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/2389823096423840559'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/2389823096423840559'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/05/AWS-DeepRacer-League-a-retrospective-after-the-race-day.html' title='AWS DeepRacer League - a retrospective after the race day'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ASiow_qs0W8/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-6230835079931582931</id><published>2021-05-27T01:30:00.066-07:00</published><updated>2021-05-28T00:31:44.096-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 7 - Distribute log tracing</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Hello guys! Welcome again to the Agnasarp! Now we are in the last step of the implementation of microservices architecture. Here we are going to implement the distributed log tracing and it will be handled by Sleuth and Zipkin. There are two unique ids that are called &lt;b&gt;Trace ID&lt;/b&gt; and &lt;b&gt;Span ID&lt;/b&gt; to implement the log tracing and with them, we can find where the request was started, where the request ended, where the request was successful, and where the request got failed, and so on.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;We have to download the Zipkin server and implement the Zipkin client and Sleuth in all our microservices.&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Download Zipkin Server&lt;/h3&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Go to&amp;nbsp;https://zipkin.io/ in the browser.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Click Quickstart&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Click on the latest release on the Java version. You can run it as a dockerized version but for the sake of simplicity, we have chosen the Java version here.&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-WyhkJOgxEPE/YK-ytrE8hGI/AAAAAAAAAgk/MbPutSqOSB8-hg7HNNoUjgkwB_jwy-7OgCLcBGAsYHQ/s1210/zipkin-download.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;809&quot; data-original-width=&quot;1210&quot; height=&quot;428&quot; src=&quot;https://1.bp.blogspot.com/-WyhkJOgxEPE/YK-ytrE8hGI/AAAAAAAAAgk/MbPutSqOSB8-hg7HNNoUjgkwB_jwy-7OgCLcBGAsYHQ/w640-h428/zipkin-download.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Download Zipkin&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The file name of Zipkin is&amp;nbsp;zipkin-server-2.23.2-exec.jar so we can use the below jar command to start the server.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f9f9f9; border-radius: 4px; box-sizing: border-box; color: #515151; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 0.8rem; line-height: 1.4; margin-bottom: 0px; margin-top: 0px; overflow-wrap: normal; overflow-x: auto; padding: 1rem; text-align: justify; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 3px; box-sizing: border-box; color: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; padding: 0px;&quot;&gt;java &lt;span class=&quot;nt&quot; style=&quot;box-sizing: border-box; color: #2f6f9f;&quot;&gt;-jar&lt;/span&gt; zipkin-server-2.23.2-exec.jar&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;It will run on&amp;nbsp;http://127.0.0.1:9411/ and when we call it using a browser, we get&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-XeGxsIqv20M/YK-2GpydEsI/AAAAAAAAAgs/j3OPkpW78nA-eW2iLpo9Bz551dKUOPtuwCLcBGAsYHQ/s1529/zipkin-running.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;664&quot; data-original-width=&quot;1529&quot; height=&quot;278&quot; src=&quot;https://1.bp.blogspot.com/-XeGxsIqv20M/YK-2GpydEsI/AAAAAAAAAgs/j3OPkpW78nA-eW2iLpo9Bz551dKUOPtuwCLcBGAsYHQ/w640-h278/zipkin-running.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Zipkin dashboard&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now we have to add Zipkin client and Sleuth in our microservices. Our main microservices are Department Service and User Service so, we have to and these dependencies only to those services.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;font-size: medium; text-align: justify;&quot;&gt;pom.xml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    &amp;lt;artifactId&amp;gt;spring-cloud-sleuth-zipkin&amp;lt;/artifactId&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    &amp;lt;artifactId&amp;gt;spring-cloud-starter-sleuth&amp;lt;/artifactId&amp;gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;And need to add Zipkin base URL in both the services as highlighted below.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Department Service&lt;/h3&gt;&lt;div&gt;&lt;h3 style=&quot;font-size: medium; text-align: justify;&quot;&gt;application.xml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;server:&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  port: 8280&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;spring:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  application:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    name: DEPARTMENT-SERVICE&lt;/div&gt;&lt;/span&gt;&lt;span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;  zipkin:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;    base-url: http://127.0.0.1:9411/&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;management:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  endpoints:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    web:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;      exposure:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;        include: &quot;*&quot;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;User Service&lt;/h3&gt;&lt;div&gt;&lt;h3 style=&quot;font-size: medium; text-align: justify;&quot;&gt;application.xml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;server:&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  port: 8380&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;spring:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  application:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    name: USER-SERVICE&lt;/div&gt;&lt;/span&gt;&lt;span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;  zipkin:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;    base-url: http://127.0.0.1:9411/&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;management:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  endpoints:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;    web:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;      exposure:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;        include: &quot;*&quot;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After we run Department Service and User Service with the Zipkin server, it enables the below information in every log that we have already defined.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;[Application name, Trace ID, Span ID]&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Trace ID&lt;/b&gt; is unique across all the microservices for a particular request. &lt;b&gt;Span ID&lt;/b&gt; will be changed accordingly in each and every microservices.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If we call Get User API it will call Get Department API as well inside the application. Therefore in User Service, we got&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;2021-05-28 01:25:47.963&amp;nbsp; INFO [USER-SERVICE,&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;be5879f5e04b09ea&lt;/span&gt;,be5879f5e04b09ea] 6680 --- [nio-8380-exec-6] c.a.user.controller.UserController&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: Inside getUserById method of UserController&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;2021-05-28 01:25:47.963&amp;nbsp; INFO [USER-SERVICE,&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;be5879f5e04b09ea&lt;/span&gt;,be5879f5e04b09ea] 6680 --- [nio-8380-exec-6] com.agnasarp.user.service.UserService&amp;nbsp; &amp;nbsp; : Inside getUserWithDepartment method of UserService&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;And in Department Service, we got&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;2021-05-28 01:25:48.019&amp;nbsp; INFO [DEPARTMENT-SERVICE,&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;be5879f5e04b09ea&lt;/span&gt;,db2285f8a3a30819] 11236 --- [nio-8280-exec-8] c.a.d.controller.DepartmentController&amp;nbsp; &amp;nbsp; : Inside getDepartmentById method of DepartmentController&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;2021-05-28 01:25:48.019&amp;nbsp; INFO [DEPARTMENT-SERVICE,&lt;span style=&quot;background-color: #f9cb9c;&quot;&gt;be5879f5e04b09ea&lt;/span&gt;,db2285f8a3a30819] 11236 --- [nio-8280-exec-8] c.a.d.service.DepartmentService&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Inside getDepartmentById method of DepartmentService&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As you can see, the highlighted Trace ID is equal in both the services because this is the same request which went through Get User -&amp;gt; Get Department. The next one which is the Span ID that is unique for the service call within itself.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We will select the user-service as the serviceName.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-0JB37OdcDRw/YK_85tPt3mI/AAAAAAAAAhQ/lJb4Njq1fj4DC-Uo-g66Msd0rWNNZv72ACLcBGAsYHQ/zipkin-query.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;630&quot; data-original-width=&quot;1336&quot; height=&quot;302&quot; src=&quot;https://lh3.googleusercontent.com/-0JB37OdcDRw/YK_85tPt3mI/AAAAAAAAAhQ/lJb4Njq1fj4DC-Uo-g66Msd0rWNNZv72ACLcBGAsYHQ/w640-h302/zipkin-query.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Zipkin query&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We can see the request when we hit the RUN QUERY button.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-OquRoz_MJd4/YK_9Ip-vsvI/AAAAAAAAAhc/nyB4DR0tPcU_eirr0b_h0i509ri1GJSWgCLcBGAsYHQ/user-service-log-traceid.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;506&quot; data-original-width=&quot;1501&quot; height=&quot;216&quot; src=&quot;https://lh3.googleusercontent.com/-OquRoz_MJd4/YK_9Ip-vsvI/AAAAAAAAAhc/nyB4DR0tPcU_eirr0b_h0i509ri1GJSWgCLcBGAsYHQ/w640-h216/user-service-log-traceid.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;User Service selection&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We can go through all the information provided by Zipkin as below. Service names, trace ids, span ids, durations, HTTP method, resource path, controller class, controller method, client address, etc. can be found as per the below image.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-PvSRUKKqrRo/YK_9OVNaUEI/AAAAAAAAAhk/lNSqY03CfNEVGInA8V7kMi32TGS_vUtgQCLcBGAsYHQ/zipkin-log-tracing.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;831&quot; data-original-width=&quot;1599&quot; height=&quot;332&quot; src=&quot;https://lh3.googleusercontent.com/-PvSRUKKqrRo/YK_9OVNaUEI/AAAAAAAAAhk/lNSqY03CfNEVGInA8V7kMi32TGS_vUtgQCLcBGAsYHQ/w640-h332/zipkin-log-tracing.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Log tracing with Zipkin&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;On the dependency page, we can get an idea about dependencies over microservices we created. As per the below image, User Service dependents on Department Service.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-TOSdOoGCluA/YK__MCWs0yI/AAAAAAAAAhw/p1ukHlZkAoQiGRc-9sDMfvFbuQzZ4nEpwCLcBGAsYHQ/dependency-page.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;620&quot; data-original-width=&quot;1531&quot; height=&quot;260&quot; src=&quot;https://lh3.googleusercontent.com/-TOSdOoGCluA/YK__MCWs0yI/AAAAAAAAAhw/p1ukHlZkAoQiGRc-9sDMfvFbuQzZ4nEpwCLcBGAsYHQ/w640-h260/dependency-page.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Dependency page&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now we have come to the end of our microservices implementation. In summary, we have implemented the Department Service, the User Service, the Service Registry, the API Gateway, the Circuit Breaker Pattern with Hystrix, the Config Server, and at last, the Distributed Log Tracing with Zipkin and Sleuth. These are the basic elements in the microservices architecture and we can implement a lot from these base models. You can get all the source code of all components from GitHub with the below links and reach our past posts through the links below. Hope you guys enjoy our posts on microservices architecture and we wish you all the best! Bye bye!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-config-server&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download config-server/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-hystrix-dashboard/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download hystrix-dashboard/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-cloud-gateway/tree/release/3.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download api-gateway/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-service-registry/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download service-registry/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-department-microservice/tree/release/4.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-user-microservice/tree/release/4.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download user-service/download/button/#2e86de&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 1 - Department Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 2 - User Microservice&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-3-service-registry.html&quot; target=&quot;_blank&quot;&gt;Go to Step 3 - Service Registry&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-4-api-gateway.html&quot; target=&quot;_blank&quot;&gt;Go to Step 4 - API Gateway&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-5-circuit-breaker-with-hystrix.html&quot; target=&quot;_blank&quot;&gt;Go to Step 5 - Circuit Breaker with Hystrix&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-6-config-server.html&quot; target=&quot;_blank&quot;&gt;Go to Step 6 - Config Server&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/6230835079931582931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/05/complete-microservices-architecture-step-7-distributed-log-tracing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6230835079931582931'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6230835079931582931'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/05/complete-microservices-architecture-step-7-distributed-log-tracing.html' title='Complete microservices architecture with real examples - Step 7 - Distribute log tracing'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-WyhkJOgxEPE/YK-ytrE8hGI/AAAAAAAAAgk/MbPutSqOSB8-hg7HNNoUjgkwB_jwy-7OgCLcBGAsYHQ/s72-w640-h428-c/zipkin-download.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-554274718619043987</id><published>2021-05-25T01:30:00.005-07:00</published><updated>2021-05-25T11:23:19.607-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 6 - Config server</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Hey buddy! Do you have an idea about maintaining properties and configuration easily by spending the least amount of time? Then, definitely, you have to set up a Config Server which is another microservice with a version control system. Let&#39;s quickly dive into the implementation of it.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-pHliEbrhVL0/YK1Ahx9db5I/AAAAAAAAAgc/mEk2JImyaukCWFnUge0k6KK6zCb2RJyFACLcBGAsYHQ/s1000/config-server.webp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://1.bp.blogspot.com/-pHliEbrhVL0/YK1Ahx9db5I/AAAAAAAAAgc/mEk2JImyaukCWFnUge0k6KK6zCb2RJyFACLcBGAsYHQ/w640-h448/config-server.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Config server&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;background: 0px 0px rgb(255, 255, 255); border: 0px; color: #1f2024; font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-size: 23px; margin: 0px 0px 15px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Step 6 - Config Server&lt;/h2&gt;&lt;div&gt;Let&#39;s take a look at the project initialization with&amp;nbsp;https://start.spring.io/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-3DWUPPGE8Rg/YKqKHkmMzgI/AAAAAAAAAf8/eQFfoUtXl1M10WDQeEIBhYKsYY36u_q7ACLcBGAsYHQ/s1524/spring-initializer-config-server.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;751&quot; data-original-width=&quot;1524&quot; height=&quot;317&quot; src=&quot;https://1.bp.blogspot.com/-3DWUPPGE8Rg/YKqKHkmMzgI/AAAAAAAAAf8/eQFfoUtXl1M10WDQeEIBhYKsYY36u_q7ACLcBGAsYHQ/w640-h317/spring-initializer-config-server.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Spring Initialzr - Config Server&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: small; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul style=&quot;font-size: medium;&quot;&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt;&amp;nbsp;Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt;&amp;nbsp;Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt;&amp;nbsp;2.4.6&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-config-server&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-config-server&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Agnasarp Config Server&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.configserver&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt;&amp;nbsp;Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt;&amp;nbsp;8&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Eureka Discovery Client&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;A REST based service for locating services for the purpose of load balancing and failover of middle-tier servers.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Config Server&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Central management for configuration via Git, SVN, or HashiCorp Vault.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-uK43KzWzt4s/YKqP4n2kjKI/AAAAAAAAAgE/mrnNCXExCW0A7W21p1oOMGuvp9mYZK0OgCLcBGAsYHQ/s405/project-structure-config-server.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;405&quot; data-original-width=&quot;341&quot; height=&quot;640&quot; src=&quot;https://1.bp.blogspot.com/-uK43KzWzt4s/YKqP4n2kjKI/AAAAAAAAAgE/mrnNCXExCW0A7W21p1oOMGuvp9mYZK0OgCLcBGAsYHQ/w538-h640/project-structure-config-server.webp&quot; width=&quot;538&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Project structure of config server in IntelliJ Idea&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;h3 style=&quot;font-size: medium;&quot;&gt;pom.xml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;		 xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.4.6&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-config-server&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-config-server&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp Config Server&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;		&amp;lt;spring-cloud.version&amp;gt;2020.0.2&amp;lt;/spring-cloud.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-config-server&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;		&amp;lt;dependencies&amp;gt;&lt;br /&gt;			&amp;lt;dependency&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;				&amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;				&amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;/dependencyManagement&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;server:&lt;br /&gt;  port: 8580&lt;br /&gt;&lt;br /&gt;spring:&lt;br /&gt;  application:&lt;br /&gt;    name: CONFIG-SERVER&lt;br /&gt;  cloud:&lt;br /&gt;    config:&lt;br /&gt;      server:&lt;br /&gt;        git:&lt;br /&gt;          uri: https://github.com/Agnasarp/agnasarp-microservice-configurations&lt;br /&gt;          clone-on-start: true&lt;br /&gt;  profiles:&lt;br /&gt;    active: native&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;AgnasarpConfigServerApplication.java&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.configserver;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.config.server.EnableConfigServer;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;@EnableConfigServer&lt;br /&gt;@EnableEurekaClient&lt;br /&gt;public class AgnasarpConfigServerApplication {&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		SpringApplication.run(AgnasarpConfigServerApplication.class, args);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Now we can create a repository in a version controlling system to manage configurations that may be used in all microservices we have created.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-IspP1-b6vGw/YKvfO1-cSUI/AAAAAAAAAgM/S28vtUHbmroOpFtcTwj8yx12vbhVReVqQCLcBGAsYHQ/s1079/microservice-configurations.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;678&quot; data-original-width=&quot;1079&quot; height=&quot;402&quot; src=&quot;https://1.bp.blogspot.com/-IspP1-b6vGw/YKvfO1-cSUI/AAAAAAAAAgM/S28vtUHbmroOpFtcTwj8yx12vbhVReVqQCLcBGAsYHQ/w640-h402/microservice-configurations.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Remote repository for configurations&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In that &lt;b&gt;application.yml&lt;/b&gt; file, we can place the configurations that we use to connect Eureka Server as below. These can be removed from all other microservices because now we have the configuration centrally.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; vertical-align: baseline;&quot;&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: true&lt;br /&gt;    fetch-registry: true&lt;br /&gt;    service-url:&lt;br /&gt;      defaultZone: http://localhost:8761/eureka/&lt;br /&gt;    instance:&lt;br /&gt;      hostname: localhost&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we have to set up one configuration in each microservice to call Service Registry. We create &lt;b&gt;bootstrap.yml&lt;/b&gt; and paste the below lines of code. This is going to be used to call Config Server just we set up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;spring:&lt;br /&gt;  cloud:&lt;br /&gt;    config:&lt;br /&gt;      enabled: true&lt;br /&gt;      uri: http://localhost:8580&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Suppose there is a configuration change so we can update it in the GitHub repository and call the &lt;b&gt;refresh &lt;/b&gt;method in relevant microservices as below.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;background-color: #fffffe; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;curl&amp;nbsp;--location&amp;nbsp;--request&amp;nbsp;POST&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&#39;http://localhost:8280/actuator/refresh&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;background-color: #fffffe; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-config-server&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download config-server/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-hystrix-dashboard/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download hystrix-dashboard/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-cloud-gateway/tree/release/3.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download api-gateway/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-service-registry/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download service-registry/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-department-microservice/tree/release/3.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-user-microservice/tree/release/3.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download user-service/download/button/#2e86de&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 1 - Department Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 2 - User Microservice&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-3-service-registry.html&quot; target=&quot;_blank&quot;&gt;Go to Step 3 - Service Registry&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-4-api-gateway.html&quot; target=&quot;_blank&quot;&gt;Go to Step 4 - API Gateway&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-5-circuit-breaker-with-hystrix.html&quot; target=&quot;_blank&quot;&gt;Go to Step 5 - Circuit Breaker with Hystrix&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/554274718619043987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-6-config-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/554274718619043987'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/554274718619043987'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-6-config-server.html' title='Complete microservices architecture with real examples - Step 6 - Config server'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-pHliEbrhVL0/YK1Ahx9db5I/AAAAAAAAAgc/mEk2JImyaukCWFnUge0k6KK6zCb2RJyFACLcBGAsYHQ/s72-w640-h448-c/config-server.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-4665432680941478455</id><published>2021-04-02T01:30:00.014-07:00</published><updated>2021-04-02T10:28:31.030-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 5 - Circuit breaker with hystrix</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Hi, guys! Welcome to Agnasarp! Today we came here with a very useful concept in the microservices architecture. In the home grid, there is a switch called &quot;breaker&quot; or &quot;circuit breaker&quot; which is automatically switched off while the electricity is flowing off. It will secure our home and everything not letting a bad thing happened. Likewise, we need to have a mechanism to secure our whole microservices echo system without hanging any service because definitely there may be service calls from one microservice to others. Therefore the same concept of circuit braking can be applied to this echo system. Here we have picked up Hystrix from several technologies. We have to setup Hystrix dashboard to see graphically what is going on behind the scene and configure the API gateway to support Hystrix.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-2iPyAHiRJGM/YGcgz9GubnI/AAAAAAAAAfI/KSKDYl6OIwkaHP39G9blZsgxOIwhV1NgQCLcBGAsYHQ/s321/hystrix.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;257&quot; data-original-width=&quot;321&quot; height=&quot;512&quot; src=&quot;https://1.bp.blogspot.com/-2iPyAHiRJGM/YGcgz9GubnI/AAAAAAAAAfI/KSKDYl6OIwkaHP39G9blZsgxOIwhV1NgQCLcBGAsYHQ/w640-h512/hystrix.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hystrix&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;background: 0px 0px rgb(255, 255, 255); border: 0px; color: #1f2024; font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-size: 23px; margin: 0px 0px 15px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Step 5 - Hystrix dashboard&lt;/h2&gt;&lt;div&gt;Let&#39;s take a look at the project initialization with&amp;nbsp;https://start.spring.io/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-19NVim6eG5U/YGcGNGOoobI/AAAAAAAAAeI/BhI_tbXDpro23l_3DO_5-T3_7pzuFmZIACLcBGAsYHQ/s1503/spring-initializer-hystrix-dashboard.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;741&quot; data-original-width=&quot;1503&quot; height=&quot;317&quot; src=&quot;https://1.bp.blogspot.com/-19NVim6eG5U/YGcGNGOoobI/AAAAAAAAAeI/BhI_tbXDpro23l_3DO_5-T3_7pzuFmZIACLcBGAsYHQ/w640-h317/spring-initializer-hystrix-dashboard.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Spring Initialzr - Hystrix Dashboard&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt;&amp;nbsp;Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt;&amp;nbsp;Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt;&amp;nbsp;2.3.10 (SNAPSHOT)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-hystrix-dashboard&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-hystrix-dashboard&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Agnasarp Hystrix Dashboard&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.hystrixdashboard&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt;&amp;nbsp;Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt;&amp;nbsp;8&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Eureka Discovery Client&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;A REST based service for locating services for the purpose of load balancing and failover of middle-tier servers.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Hystrix Dashboard [Maintenance]&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Circuit breaker dashboard with Spring Cloud Netflix Hystrix. In maintenance mode with no direct replacement.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here, we have to pick the right Spring Boot version because Hystrix may not support for few higher versions of Spring Boot. Then, we will import the project into IntelliJ Idea.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-cYxrgVsNyvc/YGcIWEYnedI/AAAAAAAAAeQ/N7zkzSnWTiQSbhkXIq3bJASW9Lp8ectTQCLcBGAsYHQ/s447/project-structure-hystrix-dashboard.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;447&quot; data-original-width=&quot;369&quot; height=&quot;640&quot; src=&quot;https://1.bp.blogspot.com/-cYxrgVsNyvc/YGcIWEYnedI/AAAAAAAAAeQ/N7zkzSnWTiQSbhkXIq3bJASW9Lp8ectTQCLcBGAsYHQ/w528-h640/project-structure-hystrix-dashboard.webp&quot; width=&quot;528&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Project structure of hystrix dashboard in IntelliJ Idea&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;font-size: medium;&quot;&gt;pom.xml&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;		 xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.3.10.BUILD-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-hystrix-dashboard&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-hystrix-dashboard&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp Hystrix Dashboard&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;		&amp;lt;spring-cloud.version&amp;gt;Hoxton.BUILD-SNAPSHOT&amp;lt;/spring-cloud.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-hystrix-dashboard&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;exclusions&amp;gt;&lt;br /&gt;				&amp;lt;exclusion&amp;gt;&lt;br /&gt;					&amp;lt;groupId&amp;gt;org.junit.vintage&amp;lt;/groupId&amp;gt;&lt;br /&gt;					&amp;lt;artifactId&amp;gt;junit-vintage-engine&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;/exclusion&amp;gt;&lt;br /&gt;			&amp;lt;/exclusions&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;		&amp;lt;dependencies&amp;gt;&lt;br /&gt;			&amp;lt;dependency&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;				&amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;				&amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;/dependencyManagement&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;	&amp;lt;repositories&amp;gt;&lt;br /&gt;		&amp;lt;repository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Milestones&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/milestone&amp;lt;/url&amp;gt;&lt;br /&gt;		&amp;lt;/repository&amp;gt;&lt;br /&gt;		&amp;lt;repository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-snapshots&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Snapshots&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;			&amp;lt;snapshots&amp;gt;&lt;br /&gt;				&amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;			&amp;lt;/snapshots&amp;gt;&lt;br /&gt;		&amp;lt;/repository&amp;gt;&lt;br /&gt;	&amp;lt;/repositories&amp;gt;&lt;br /&gt;	&amp;lt;pluginRepositories&amp;gt;&lt;br /&gt;		&amp;lt;pluginRepository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Milestones&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/milestone&amp;lt;/url&amp;gt;&lt;br /&gt;		&amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;		&amp;lt;pluginRepository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-snapshots&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Snapshots&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;			&amp;lt;snapshots&amp;gt;&lt;br /&gt;				&amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;			&amp;lt;/snapshots&amp;gt;&lt;br /&gt;		&amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;	&amp;lt;/pluginRepositories&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;server:&lt;br /&gt;  port: 8480&lt;br /&gt;&lt;br /&gt;spring:&lt;br /&gt;  application:&lt;br /&gt;    name: HYSTRIX-DASHBOARD&lt;br /&gt;&lt;br /&gt;hystrix:&lt;br /&gt;  dashboard:&lt;br /&gt;    proxy-stream-allow-list: &quot;*&quot;&lt;br /&gt;&lt;br /&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: true&lt;br /&gt;    fetch-registry: true&lt;br /&gt;    service-url:&lt;br /&gt;      defaultZone: http://localhost:8761/eureka/&lt;br /&gt;    instance:&lt;br /&gt;      hostname: localhost&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;AgnasarpHystrixDashboardApplication.java&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.hystrixdashboard;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&lt;br /&gt;import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;@EnableEurekaClient&lt;br /&gt;@EnableHystrixDashboard&lt;br /&gt;public class AgnasarpHystrixDashboardApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(AgnasarpHystrixDashboardApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we have to do few modifications in API Gateway microservice as well. Those changes are highlighted below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;API Gateway modifications&lt;/h2&gt;&lt;div&gt;&lt;h3 style=&quot;font-size: medium;&quot;&gt;pom.xml&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&lt;br /&gt;         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;    &amp;lt;parent&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;2.3.10.BUILD-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;        &amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;    &amp;lt;/parent&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;agnasarp-cloud-gateway&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;agnasarp-cloud-gateway&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;description&amp;gt;Agnasarp Cloud Gateway&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;properties&amp;gt;&lt;br /&gt;        &amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;        &amp;lt;spring-cloud.version&amp;gt;Hoxton.BUILD-SNAPSHOT&amp;lt;/spring-cloud.version&amp;gt;&lt;br /&gt;    &amp;lt;/properties&amp;gt;&lt;br /&gt;    &amp;lt;dependencies&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-actuator&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-cloud-starter-gateway&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-hystrix&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;            &amp;lt;exclusions&amp;gt;&lt;br /&gt;                &amp;lt;exclusion&amp;gt;&lt;br /&gt;                    &amp;lt;groupId&amp;gt;org.junit.vintage&amp;lt;/groupId&amp;gt;&lt;br /&gt;                    &amp;lt;artifactId&amp;gt;junit-vintage-engine&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;/exclusion&amp;gt;&lt;br /&gt;            &amp;lt;/exclusions&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;    &amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;        &amp;lt;dependencies&amp;gt;&lt;br /&gt;            &amp;lt;dependency&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;                &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;                &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;            &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;/dependencies&amp;gt;&lt;br /&gt;    &amp;lt;/dependencyManagement&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;build&amp;gt;&lt;br /&gt;        &amp;lt;plugins&amp;gt;&lt;br /&gt;            &amp;lt;plugin&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;/plugin&amp;gt;&lt;br /&gt;        &amp;lt;/plugins&amp;gt;&lt;br /&gt;    &amp;lt;/build&amp;gt;&lt;br /&gt;    &amp;lt;repositories&amp;gt;&lt;br /&gt;        &amp;lt;repository&amp;gt;&lt;br /&gt;            &amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;Spring Milestones&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;url&amp;gt;https://repo.spring.io/milestone&amp;lt;/url&amp;gt;&lt;br /&gt;        &amp;lt;/repository&amp;gt;&lt;br /&gt;        &amp;lt;repository&amp;gt;&lt;br /&gt;            &amp;lt;id&amp;gt;spring-snapshots&amp;lt;/id&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;Spring Snapshots&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;url&amp;gt;https://repo.spring.io/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;            &amp;lt;snapshots&amp;gt;&lt;br /&gt;                &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;            &amp;lt;/snapshots&amp;gt;&lt;br /&gt;        &amp;lt;/repository&amp;gt;&lt;br /&gt;    &amp;lt;/repositories&amp;gt;&lt;br /&gt;    &amp;lt;pluginRepositories&amp;gt;&lt;br /&gt;        &amp;lt;pluginRepository&amp;gt;&lt;br /&gt;            &amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;Spring Milestones&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;url&amp;gt;https://repo.spring.io/milestone&amp;lt;/url&amp;gt;&lt;br /&gt;        &amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;        &amp;lt;pluginRepository&amp;gt;&lt;br /&gt;            &amp;lt;id&amp;gt;spring-snapshots&amp;lt;/id&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;Spring Snapshots&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;url&amp;gt;https://repo.spring.io/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;            &amp;lt;snapshots&amp;gt;&lt;br /&gt;                &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;            &amp;lt;/snapshots&amp;gt;&lt;br /&gt;        &amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;    &amp;lt;/pluginRepositories&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;server:&lt;br /&gt;  port:&lt;br /&gt;    9191&lt;br /&gt;&lt;br /&gt;spring:&lt;br /&gt;  application:&lt;br /&gt;    name: API-GATEWAY&lt;br /&gt;  cloud:&lt;br /&gt;    gateway:&lt;br /&gt;      routes:&lt;br /&gt;        - id: DEPARTMENT-SERVICE&lt;br /&gt;          uri: lb://DEPARTMENT-SERVICE&lt;br /&gt;          predicates:&lt;br /&gt;            - Path=/departments/**&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;          filters:&lt;br /&gt;            - name: CircuitBreaker&lt;br /&gt;              args:&lt;br /&gt;                name: DEPARTMENT-SERVICE&lt;br /&gt;                fallbackuri: forward:/departmentServiceFallback&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;        - id: USER-SERVICE&lt;br /&gt;          uri: lb://USER-SERVICE&lt;br /&gt;          predicates:&lt;br /&gt;            - Path=/users/**&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;          filters:&lt;br /&gt;            - name: CircuitBreaker&lt;br /&gt;              args:&lt;br /&gt;                name: USER-SERVICE&lt;br /&gt;                fallbackuri: forward:/userServiceFallback&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;hystrix:&lt;br /&gt;  command:&lt;br /&gt;    fallbackcmd:&lt;br /&gt;      execution:&lt;br /&gt;        isolation:&lt;br /&gt;          thread:&lt;br /&gt;            timeoutInMilliseconds: 4000&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&lt;br /&gt;management:&lt;br /&gt;  endpoints:&lt;br /&gt;    web:&lt;br /&gt;      exposure:&lt;br /&gt;        include: hystrix.stream&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: true&lt;br /&gt;    fetch-registry: true&lt;br /&gt;    service-url:&lt;br /&gt;      defaultZone: http://localhost:8761/eureka/&lt;br /&gt;    instance:&lt;br /&gt;      hostname: localhost&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;AgnasarpCloudGatewayApplication.java&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;package com.agnasarp.cloudgateway;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;import org.springframework.cloud.netflix.hystrix.EnableHystrix;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;@EnableEurekaClient&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;@EnableHystrix&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;public class AgnasarpCloudGatewayApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(AgnasarpCloudGatewayApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;And a new fallback controller has been added to forward the request when the 3rd party API is not available or unresponsive within the timeout defined in the application.yml file and the fallback method in the controller will give a meaningful message as below.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;&lt;h3&gt;FallbackController.java&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.cloudgateway.controller;&lt;br /&gt;&lt;br /&gt;import org.springframework.web.bind.annotation.GetMapping;&lt;br /&gt;import org.springframework.web.bind.annotation.RestController;&lt;br /&gt;&lt;br /&gt;@RestController&lt;br /&gt;public class FallbackController {&lt;br /&gt;    @GetMapping(&quot;/departmentServiceFallback&quot;)&lt;br /&gt;    public String departmentServiceFallback(){&lt;br /&gt;        return &quot;DEPARTMENT-SERVICE is not available or unresponsive. Please try again later.&quot;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @GetMapping(&quot;/userServiceFallback&quot;)&lt;br /&gt;    public String userServiceFallback(){&lt;br /&gt;        return &quot;USER-SERVICE is not available or unresponsive. Please try again later.&quot;;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If Service Registry, Department Service, User Service, API Gateway Service, and Hystrix Dashboard Service is up and running we can test whether our circuit breaker is working well or not. We can go to the Hystrix Dashboard with the below link.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;http://localhost:8480/hystrix&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-niztoUx34oA/YGcWQEN73sI/AAAAAAAAAeY/XkqzlK2BKQoVeeSCMYhd_R1qgKjSQorTgCLcBGAsYHQ/s1050/hystrix-dashboard.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;563&quot; data-original-width=&quot;1050&quot; height=&quot;344&quot; src=&quot;https://1.bp.blogspot.com/-niztoUx34oA/YGcWQEN73sI/AAAAAAAAAeY/XkqzlK2BKQoVeeSCMYhd_R1qgKjSQorTgCLcBGAsYHQ/w640-h344/hystrix-dashboard.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hystrix Dashboard&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can see the status of microservices configured in API Gateway via the below hystrix stream endpoint.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;http://localhost:9191/actuator/hystrix.stream&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-u_fGGSXxvXM/YGcYA4pp_4I/AAAAAAAAAeg/uvo1EjFcAb85HaNcXagNSIcSiKqCOoGIQCLcBGAsYHQ/s842/hystrix-stream.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;438&quot; data-original-width=&quot;842&quot; height=&quot;332&quot; src=&quot;https://1.bp.blogspot.com/-u_fGGSXxvXM/YGcYA4pp_4I/AAAAAAAAAeg/uvo1EjFcAb85HaNcXagNSIcSiKqCOoGIQCLcBGAsYHQ/w640-h332/hystrix-stream.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hystrix Stream&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When all User Service and Department Service are working fine we can get successful response as below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-uESiV-9_0eY/YGdUFkMOmSI/AAAAAAAAAfQ/dLoxj3p_Q60dOCcRKMK3foqe7kzCbJ3EgCLcBGAsYHQ/s1080/user-service-success.webp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;567&quot; data-original-width=&quot;1080&quot; height=&quot;336&quot; src=&quot;https://1.bp.blogspot.com/-uESiV-9_0eY/YGdUFkMOmSI/AAAAAAAAAfQ/dLoxj3p_Q60dOCcRKMK3foqe7kzCbJ3EgCLcBGAsYHQ/w640-h336/user-service-success.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;User Service - Success&amp;nbsp;Scenario&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hystrix Dashboard will show the circuit as closed as below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-_FQsvqOIsYg/YGcbRrk7DwI/AAAAAAAAAew/lYk1hgEfB_kV6QUTIehHFyPcJyIU_qZ_gCLcBGAsYHQ/s804/hystrix-dashboard-closed.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;411&quot; data-original-width=&quot;804&quot; height=&quot;328&quot; src=&quot;https://1.bp.blogspot.com/-_FQsvqOIsYg/YGcbRrk7DwI/AAAAAAAAAew/lYk1hgEfB_kV6QUTIehHFyPcJyIU_qZ_gCLcBGAsYHQ/w640-h328/hystrix-dashboard-closed.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hystrix Dashboard - Circuit Closed&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we have down the Department Service which is being called by the User Service and try to call the User Service, so we got the below response hardcoded in the fallback method&amp;nbsp;&lt;b&gt;userServiceFallback.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-X6_5_ouSM7o/YGccu29KvTI/AAAAAAAAAe4/5cSGIleoknU2fwaJMtTw-khgZoW9oFCdwCLcBGAsYHQ/s1080/user-service-fail.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;491&quot; data-original-width=&quot;1080&quot; height=&quot;290&quot; src=&quot;https://1.bp.blogspot.com/-X6_5_ouSM7o/YGccu29KvTI/AAAAAAAAAe4/5cSGIleoknU2fwaJMtTw-khgZoW9oFCdwCLcBGAsYHQ/w640-h290/user-service-fail.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;User Service - Fail Scenario&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Then the Hystrix Dashboard shows the status of our services graphically when the circuit opens.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-JfKRB75TS7M/YGceFvZhD4I/AAAAAAAAAfA/_nGytMrttUk4DNnKLz2nS_vBKLUX32gXgCLcBGAsYHQ/s806/hystrix-dashboard-opened.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;411&quot; data-original-width=&quot;806&quot; height=&quot;326&quot; src=&quot;https://1.bp.blogspot.com/-JfKRB75TS7M/YGceFvZhD4I/AAAAAAAAAfA/_nGytMrttUk4DNnKLz2nS_vBKLUX32gXgCLcBGAsYHQ/w640-h326/hystrix-dashboard-opened.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hystrix Dashboard - Circuit Opened&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is all for today. In summary, we have created a Hystrix Dashboard and configured API Gateway to support Hystrix to implement the circuit breaker pattern in our echo system. You can also try with these and all source code can be downloaded from GitHub using the below links. Hope you have grabbed something from this post and we will meet again with another important concept in microservices. Until then, bye bye!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-hystrix-dashboard&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download hystrix-dashboard/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-cloud-gateway/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download api-gateway/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-service-registry/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download service-registry/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-department-microservice/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-user-microservice/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download user-service/download/button/#2e86de&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 1 - Department Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 2 - User Microservice&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-3-service-registry.html&quot; target=&quot;_blank&quot;&gt;Go to Step 3 - Service Registry&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-4-api-gateway.html&quot; target=&quot;_blank&quot;&gt;Go to Step 4 - API Gateway&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/4665432680941478455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-5-circuit-breaker-with-hystrix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/4665432680941478455'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/4665432680941478455'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/04/complete-microservices-architecture-step-5-circuit-breaker-with-hystrix.html' title='Complete microservices architecture with real examples - Step 5 - Circuit breaker with hystrix'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-2iPyAHiRJGM/YGcgz9GubnI/AAAAAAAAAfI/KSKDYl6OIwkaHP39G9blZsgxOIwhV1NgQCLcBGAsYHQ/s72-w640-h512-c/hystrix.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-1410749902816097794</id><published>2021-03-29T21:30:00.003-07:00</published><updated>2021-03-30T01:43:16.607-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 4 - API gateway</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Hi geeks! as per our complete microservices architecture, we have developed two microservices with a service registry. With this implementation, users are calling APIs of these microservices directly. Then there are different entry points for these APIs and to set a single entry point we have to set up an API Gateway service. We can define even this as a microservice. So we will see how can we implement an API gateway and how our existing microservices can be integrated with this with practical examples.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-zBHkFvn7CDE/YEetYmGDllI/AAAAAAAAAdI/-jj6EJo3nxElHnSP2dscHQe6PyIb49HUgCLcBGAsYHQ/api-gateway.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;API Gateway&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;448&quot; src=&quot;https://lh3.googleusercontent.com/-zBHkFvn7CDE/YEetYmGDllI/AAAAAAAAAdI/-jj6EJo3nxElHnSP2dscHQe6PyIb49HUgCLcBGAsYHQ/w640-h448/api-gateway.webp&quot; title=&quot;API Gateway&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;API Gateway&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;background: 0px 0px rgb(255, 255, 255); border: 0px; color: #1f2024; font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-size: 23px; margin: 0px 0px 15px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Step 4 - API Gateway&lt;/h2&gt;&lt;div&gt;Let&#39;s take a look at the project initialization with&amp;nbsp;https://start.spring.io/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;background: 0px 0px rgb(255, 255, 255); border: 0px; color: #1f2024; font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-size: 21px; margin: 0px 0px 15px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Initialization details&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-8px8j-BDJqg/YEr1QqLVDoI/AAAAAAAAAdU/Br9ydFnywEE-8z91AcS8-AJ9FhCy1K-OQCLcBGAsYHQ/spring-initializer-api-gateway.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;745&quot; data-original-width=&quot;1506&quot; height=&quot;317&quot; src=&quot;https://lh3.googleusercontent.com/-8px8j-BDJqg/YEr1QqLVDoI/AAAAAAAAAdU/Br9ydFnywEE-8z91AcS8-AJ9FhCy1K-OQCLcBGAsYHQ/w640-h317/spring-initializer-api-gateway.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small; text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Spring Initialzr - API Gateway&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt;&amp;nbsp;Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt;&amp;nbsp;Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt;&amp;nbsp;2.4.2&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-cloud-gateway&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-cloud-gateway&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Agnasarp Cloud Gateway&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.cloudgateway&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt;&amp;nbsp;Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt;&amp;nbsp;8&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Eureka Discovery Client&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;A REST based service for locating services for the purpose of load balancing and failover of middle-tier servers.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Gateway&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Provides a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as security, monitoring/metrics, and resiliency.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Boot Actuator&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Supports built in (or custom) endpoints that let you monitor and manage your application - such as application health, metrics, sessions, etc.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Then, we will import the project into IntelliJ Idea.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-zRKBQBBPuYk/YEr4jeYSIpI/AAAAAAAAAdc/YNkDvvpjkQ4ubQdwvI9YcEMYM_1wuCNAACLcBGAsYHQ/project-structure-api-gateway.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;428&quot; data-original-width=&quot;348&quot; height=&quot;640&quot; src=&quot;https://lh3.googleusercontent.com/-zRKBQBBPuYk/YEr4jeYSIpI/AAAAAAAAAdc/YNkDvvpjkQ4ubQdwvI9YcEMYM_1wuCNAACLcBGAsYHQ/w520-h640/project-structure-api-gateway.webp&quot; width=&quot;520&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Project structure of API Gateway in IntelliJ Idea&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3 style=&quot;font-size: medium;&quot;&gt;pom.xml&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;		 xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-cloud-gateway&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-cloud-gateway&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp Cloud Gateway&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;		&amp;lt;spring-cloud.version&amp;gt;2020.0.1&amp;lt;/spring-cloud.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-actuator&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-gateway&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;exclusions&amp;gt;&lt;br /&gt;				&amp;lt;exclusion&amp;gt;&lt;br /&gt;					&amp;lt;groupId&amp;gt;org.junit.vintage&amp;lt;/groupId&amp;gt;&lt;br /&gt;					&amp;lt;artifactId&amp;gt;junit-vintage-engine&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;/exclusion&amp;gt;&lt;br /&gt;			&amp;lt;/exclusions&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;		&amp;lt;dependencies&amp;gt;&lt;br /&gt;			&amp;lt;dependency&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;				&amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;				&amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;/dependencyManagement&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;font-size: medium;&quot;&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;server:&lt;br /&gt;  port:&lt;br /&gt;    9191&lt;br /&gt;&lt;br /&gt;spring:&lt;br /&gt;  application:&lt;br /&gt;    name: API-GATEWAY&lt;br /&gt;  cloud:&lt;br /&gt;    gateway:&lt;br /&gt;      routes:&lt;br /&gt;        - id: DEPARTMENT-SERVICE&lt;br /&gt;          uri: lb://DEPARTMENT-SERVICE&lt;br /&gt;          predicates:&lt;br /&gt;            - Path=/departments/**&lt;br /&gt;        - id: USER-SERVICE&lt;br /&gt;          uri: lb://USER-SERVICE&lt;br /&gt;          predicates:&lt;br /&gt;            - Path=/users/**&lt;br /&gt;&lt;br /&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: true&lt;br /&gt;    fetch-registry: true&lt;br /&gt;    service-url:&lt;br /&gt;      defaultZone: http://localhost:8761/eureka/&lt;br /&gt;    instance:&lt;br /&gt;      hostname: localhost&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;font-size: medium;&quot;&gt;&lt;h3&gt;AgnasarpServiceRegistryApplication.java&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.cloudgateway;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;@EnableEurekaClient&lt;br /&gt;public class AgnasarpCloudGatewayApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(AgnasarpCloudGatewayApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;Now we can see Department Service, User Service, and API Gateway Service are up and running when you refresh the Service Registry. Instead of using ports of services themselves, we can use the port of API Gateway to contact each service configured in it. Any service can be called via port 9191 already configured but as an example, we will call the get-user-service as below.&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: medium; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-N6lhl55EG8A/YGLdVoCcsSI/AAAAAAAAAeA/rVV1m3L849gFo8Mm5ByoooQEXienT8xKACLcBGAsYHQ/get-user-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;568&quot; data-original-width=&quot;1188&quot; height=&quot;306&quot; src=&quot;https://lh3.googleusercontent.com/-N6lhl55EG8A/YGLdVoCcsSI/AAAAAAAAAeA/rVV1m3L849gFo8Mm5ByoooQEXienT8xKACLcBGAsYHQ/w640-h306/get-user-service.webp&quot; title=&quot;Get-User-Service&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Get-User-Service&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;font-size: medium;&quot;&gt;&lt;div&gt;That is all for today&#39;s post. Hope you got the concept of API Gateway in the microservices architecture. If you need the source code of these services, please click the below buttons to get them from&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;. We will meet again with this kind of tech topic soon. Until then bye bye!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-cloud-gateway/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download api-gateway/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-service-registry/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download service-registry/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-department-microservice/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-user-microservice/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download user-service/download/button/#2e86de&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: start;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 1 - Department Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: medium; text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 2 - User Microservice&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-3-service-registry.html&quot; target=&quot;_blank&quot;&gt;Go to Step 3 - Service Registry&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/1410749902816097794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-4-api-gateway.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/1410749902816097794'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/1410749902816097794'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-4-api-gateway.html' title='Complete microservices architecture with real examples - Step 4 - API gateway'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-zBHkFvn7CDE/YEetYmGDllI/AAAAAAAAAdI/-jj6EJo3nxElHnSP2dscHQe6PyIb49HUgCLcBGAsYHQ/s72-w640-h448-c/api-gateway.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-8017528806183401708</id><published>2021-03-08T00:30:00.006-08:00</published><updated>2021-03-08T20:36:50.180-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 3 - Service registry</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Welcome to today&#39;s new tech topic. Today, we are going to describe another important component in the microservices architecture, the Service Registry. Both advantageous and disadvantageous are there with the service registry. The main benefit of that is to keep all address details of microservices globally and the ability to ignore each individual hostnames and port details when a service is being called by the end-user or another service. Just we can call services of a microservice only with its name. On the other hand, there is a drawback because we have to add a mandatory configuration in all microservices which are going to be registered with the registry. Anyway, we will quickly look into the practical example of this vastly used component in the microservices architecture. This is an extension of the previous two posts, one was for &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Department Service&lt;/a&gt; and the other for &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;User Service&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-yxWTEvB0lsM/YD6b1XBBWvI/AAAAAAAAAcc/TL2pcl11xbQGZS9hse0HRNJV-oONZU--ACLcBGAsYHQ/service-registry.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;431&quot; src=&quot;https://lh3.googleusercontent.com/-yxWTEvB0lsM/YD6b1XBBWvI/AAAAAAAAAcc/TL2pcl11xbQGZS9hse0HRNJV-oONZU--ACLcBGAsYHQ/w615-h431/service-registry.webp&quot; width=&quot;615&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Service Registry&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2&gt;Step 3 - Service Registry&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Can you guess how we can implement a service registry in the microservices architecture? Again we have to set up another microservice with different dependencies. This is the time to dive into the codebase. Here we go.&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Initialization details&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-y1ZL-LhT2S0/YD6kpt8ybGI/AAAAAAAAAck/1SdZuUMOZUwkiUdXoB2jiZPuUmjaGoASACLcBGAsYHQ/spring-initializer-service-registry.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;743&quot; data-original-width=&quot;1494&quot; height=&quot;307&quot; src=&quot;https://lh3.googleusercontent.com/-y1ZL-LhT2S0/YD6kpt8ybGI/AAAAAAAAAck/1SdZuUMOZUwkiUdXoB2jiZPuUmjaGoASACLcBGAsYHQ/w618-h307/spring-initializer-service-registry.webp&quot; width=&quot;618&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Spring Initialzr - Service Registry&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt;&amp;nbsp;Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt;&amp;nbsp;Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt;&amp;nbsp;2.4.2&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-service-registry&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-service-registry&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Agnasarp Service Registry&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.serviceregistry&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt;&amp;nbsp;Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt;&amp;nbsp;8&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Eureka Server&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;spring-cloud-netflix Eureka Server.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Then, we will import the project into IntelliJ Idea.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-JTl-mXXtLro/YD6nEVMY5pI/AAAAAAAAAcs/smeZn-mm4IwHdTmoPrt6j01g-NMdOm3cgCLcBGAsYHQ/project-structure-service-registry.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;446&quot; data-original-width=&quot;393&quot; height=&quot;385&quot; src=&quot;https://lh3.googleusercontent.com/-JTl-mXXtLro/YD6nEVMY5pI/AAAAAAAAAcs/smeZn-mm4IwHdTmoPrt6j01g-NMdOm3cgCLcBGAsYHQ/w338-h385/project-structure-service-registry.webp&quot; width=&quot;338&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Project structure of service registry in IntelliJ Idea&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;pom.xml&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&lt;br /&gt;         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;    &amp;lt;parent&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;        &amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;    &amp;lt;/parent&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;agnasarp-service-registry&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;agnasarp-service-registry&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;description&amp;gt;Agnasarp Service Registry&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;properties&amp;gt;&lt;br /&gt;        &amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;        &amp;lt;spring-cloud.version&amp;gt;2020.0.1&amp;lt;/spring-cloud.version&amp;gt;&lt;br /&gt;    &amp;lt;/properties&amp;gt;&lt;br /&gt;    &amp;lt;dependencies&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-server&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;    &amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;        &amp;lt;dependencies&amp;gt;&lt;br /&gt;            &amp;lt;dependency&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;                &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;                &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;            &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;/dependencies&amp;gt;&lt;br /&gt;    &amp;lt;/dependencyManagement&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;build&amp;gt;&lt;br /&gt;        &amp;lt;plugins&amp;gt;&lt;br /&gt;            &amp;lt;plugin&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;/plugin&amp;gt;&lt;br /&gt;        &amp;lt;/plugins&amp;gt;&lt;br /&gt;    &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;server:&lt;br /&gt;  port: 8761&lt;br /&gt;&lt;br /&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: false&lt;br /&gt;    fetch-registry: false&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;AgnasarpServiceRegistryApplication.java&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.serviceregistry;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;@EnableEurekaServer&lt;br /&gt;public class AgnasarpServiceRegistryApplication {&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		SpringApplication.run(AgnasarpServiceRegistryApplication.class, args);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Now, we have to set &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Department Service&lt;/a&gt; and &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;User Service&lt;/a&gt; as discovery clients and for that, we need to add one dependency in the pom.xml file and put an annotation in the main class. Ultimately we have to register these services in the registry by adding few configurations in the application.yml file.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Department Service&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;To work with Service Registry, other microservices like &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Department Service&lt;/a&gt; and &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;User Service&lt;/a&gt; need some modifications as below.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;pom.xml&lt;/h3&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Need to add highlighted dependency to the pom.xml file.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&lt;br /&gt;         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;    &amp;lt;parent&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;        &amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;    &amp;lt;/parent&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;agnasarp-department-microservice&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;agnasarp-department-microservice&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;description&amp;gt;Agnasarp Department Microservice&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;properties&amp;gt;&lt;br /&gt;        &amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;lt;spring-cloud.version&amp;gt;2020.0.1&amp;lt;/spring-cloud.version&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;    &amp;lt;/properties&amp;gt;&lt;br /&gt;    &amp;lt;dependencies&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;com.h2database&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;h2&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;dependency&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;            &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;        &amp;lt;/dependency&amp;gt;&lt;br /&gt;    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;        &amp;lt;dependencies&amp;gt;&lt;br /&gt;            &amp;lt;dependency&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;                &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;                &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;            &amp;lt;/dependency&amp;gt;&lt;br /&gt;        &amp;lt;/dependencies&amp;gt;&lt;br /&gt;    &amp;lt;/dependencyManagement&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;build&amp;gt;&lt;br /&gt;        &amp;lt;plugins&amp;gt;&lt;br /&gt;            &amp;lt;plugin&amp;gt;&lt;br /&gt;                &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;                &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                &amp;lt;configuration&amp;gt;&lt;br /&gt;                    &amp;lt;excludes&amp;gt;&lt;br /&gt;                        &amp;lt;exclude&amp;gt;&lt;br /&gt;                            &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;                            &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                        &amp;lt;/exclude&amp;gt;&lt;br /&gt;                    &amp;lt;/excludes&amp;gt;&lt;br /&gt;                &amp;lt;/configuration&amp;gt;&lt;br /&gt;            &amp;lt;/plugin&amp;gt;&lt;br /&gt;        &amp;lt;/plugins&amp;gt;&lt;br /&gt;    &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;Need to add highlighted configurations to the application.yml file&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;server:&lt;br /&gt;  port: 8280&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;spring:&lt;br /&gt;  application:&lt;br /&gt;    name: DEPARTMENT-SERVICE&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: true&lt;br /&gt;    fetch-registry: true&lt;br /&gt;    service-url:&lt;br /&gt;      defaultZone: http://localhost:8761/eureka/&lt;br /&gt;    instance:&lt;br /&gt;      hostname: localhost&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;AgnasarpDepartmentMicroserviceApplication.java&lt;/h3&gt;&lt;div&gt;Need to add highlighted annotation to AgnasarpDepartmentMicroserviceApplication.java file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;package com.agnasarp.department;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;@EnableEurekaClient&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;public class AgnasarpDepartmentMicroserviceApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(AgnasarpDepartmentMicroserviceApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;All other source code should remain the same and we have to apply the same above changes to the &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;User Service&lt;/a&gt; as well.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h2&gt;User Service&lt;/h2&gt;&lt;div&gt;&lt;h3&gt;pom.xml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;Need to add highlighted dependency to the pom.xml file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-user-microservice&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-user-microservice&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp User Microservice&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;		&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;lt;spring-cloud.version&amp;gt;2020.0.1&amp;lt;/spring-cloud.version&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-eureka-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;com.h2database&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;h2&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;		&amp;lt;dependencies&amp;gt;&lt;br /&gt;			&amp;lt;dependency&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;				&amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;				&amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;/dependencyManagement&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;configuration&amp;gt;&lt;br /&gt;					&amp;lt;excludes&amp;gt;&lt;br /&gt;						&amp;lt;exclude&amp;gt;&lt;br /&gt;							&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;							&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;						&amp;lt;/exclude&amp;gt;&lt;br /&gt;					&amp;lt;/excludes&amp;gt;&lt;br /&gt;				&amp;lt;/configuration&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Need to add highlighted configurations to the application.yml file&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;server:&lt;br /&gt;  port: 8380&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;spring:&lt;br /&gt;  application:&lt;br /&gt;    name: USER-SERVICE&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;eureka:&lt;br /&gt;  client:&lt;br /&gt;    register-with-eureka: true&lt;br /&gt;    fetch-registry: true&lt;br /&gt;    service-url:&lt;br /&gt;      defaultZone: http://localhost:8761/eureka/&lt;br /&gt;    instance:&lt;br /&gt;      hostname: localhost&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;AgnasarpUserMicroserviceApplication.java&lt;/h3&gt;&lt;div&gt;Need to add highlighted annotation to AgnasarpUserMicroserviceApplication.java file. Here we have to explicitly tell RestTemplate to loadbalance if there are multiple instances of &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Department Service&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;package com.agnasarp.user;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.client.loadbalancer.LoadBalanced;&lt;br /&gt;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&lt;br /&gt;import org.springframework.context.annotation.Bean;&lt;br /&gt;import org.springframework.web.client.RestTemplate;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;@EnableEurekaClient&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;public class AgnasarpUserMicroserviceApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(AgnasarpUserMicroserviceApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Bean&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;@LoadBalanced&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;&lt;br /&gt;    RestTemplate restTemplate() {&lt;br /&gt;        return new RestTemplate();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;UserService.java&lt;/h3&gt;&lt;div&gt;Need to replace IP and Port details in UserService.java file by application name as highlighted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;package com.agnasarp.user.service;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.user.entity.User;&lt;br /&gt;import com.agnasarp.user.repository.UserRepository;&lt;br /&gt;import com.agnasarp.user.vo.Department;&lt;br /&gt;import com.agnasarp.user.vo.ResponseTemplateVo;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;import org.springframework.web.client.RestTemplate;&lt;br /&gt;&lt;br /&gt;@Service&lt;br /&gt;public class UserService {&lt;br /&gt;    private static final Logger log = LoggerFactory.getLogger(UserService.class);&lt;br /&gt;    @Autowired&lt;br /&gt;    private UserRepository userRepository;&lt;br /&gt;    @Autowired&lt;br /&gt;    private RestTemplate restTemplate;&lt;br /&gt;&lt;br /&gt;    public User saveUser(User user) {&lt;br /&gt;        log.info(&quot;Inside saveUser method of UserService&quot;);&lt;br /&gt;        return userRepository.save(user);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public ResponseTemplateVo getUserWithDepartment(Long userId) {&lt;br /&gt;        log.info(&quot;Inside getUserWithDepartment method of UserService&quot;);&lt;br /&gt;        ResponseTemplateVo responseTemplateVo = new ResponseTemplateVo();&lt;br /&gt;        User user = userRepository.getUserByUserId(userId);&lt;br /&gt;        Department department = restTemplate.getForObject(&quot;http://&lt;/span&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;DEPARTMENT-SERVICE&lt;/span&gt;&lt;span style=&quot;background-color: rgba(155, 155, 155, 0.1);&quot;&gt;/&quot; +&lt;br /&gt;                &quot;departments/&quot; + userId, Department.class);&lt;br /&gt;        responseTemplateVo.setUser(user);&lt;br /&gt;        responseTemplateVo.setDepartment(department);&lt;br /&gt;        return responseTemplateVo;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If we configure all well, we can see the Service Registry is up and running by using port 8761 on localhost as below. All two microservices are working fine with Service Registry as well.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Eureka Server Dashboard&lt;/h3&gt;&lt;div style=&quot;text-align: left;&quot;&gt;http://localhost:8761/&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-n7uVCh7zVO0/YEb2xMgHPJI/AAAAAAAAAdA/qAsVWRnfbtoKycT2WVevOVKdP_cvmuJPACLcBGAsYHQ/service-registry-dashboard.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;760&quot; data-original-width=&quot;1587&quot; height=&quot;302&quot; src=&quot;https://lh3.googleusercontent.com/-n7uVCh7zVO0/YEb2xMgHPJI/AAAAAAAAAdA/qAsVWRnfbtoKycT2WVevOVKdP_cvmuJPACLcBGAsYHQ/w632-h302/service-registry-dashboard.webp&quot; width=&quot;632&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Eureka Server Dashboard&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is all for today&#39;s post. Hope you have a good understanding of microservices and service registry concepts. If you need the source code of these services, please click the below buttons to get them from &lt;a href=&quot;https://github.com/Agnasarp&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;. We will meet again with this kind of tech topic soon. Until then bye bye!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-service-registry/tree/release/1.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download service-registry/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-department-microservice/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-user-microservice/tree/release/2.0.0&quot; style=&quot;font-family: monospace;&quot; target=&quot;_blank&quot;&gt;Download user-service/download/button/#2e86de&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 1 - Department Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 2 - User Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/8017528806183401708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-3-service-registry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/8017528806183401708'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/8017528806183401708'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/03/complete-microservices-architecture-step-3-service-registry.html' title='Complete microservices architecture with real examples - Step 3 - Service registry'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-yxWTEvB0lsM/YD6b1XBBWvI/AAAAAAAAAcc/TL2pcl11xbQGZS9hse0HRNJV-oONZU--ACLcBGAsYHQ/s72-w615-h431-c/service-registry.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-3095086178292855724</id><published>2021-02-19T00:30:00.193-08:00</published><updated>2021-03-08T09:36:47.812-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 2 - User microservice</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Hi everyone! As in the &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;previous post&lt;/a&gt;, we are going to implement a complete microservice architecture and as the first step, we have created a microservice which is called &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Department Service&lt;/a&gt;&amp;nbsp;and for the sake of complexity which can handle with the architecture, we need one more service which has a call to the Department Service within it. So, here in this post, we will try to implement another service called User Service. we will quickly go into the implementation details.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-y4PNWuanX04/YDB-jHiwwyI/AAAAAAAAAcM/yhM_V7jYFCkO_OMszwAMyUWc4pi4Co2bwCLcBGAsYHQ/user-microservice.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;436&quot; src=&quot;https://lh3.googleusercontent.com/-y4PNWuanX04/YDB-jHiwwyI/AAAAAAAAAcM/yhM_V7jYFCkO_OMszwAMyUWc4pi4Co2bwCLcBGAsYHQ/w625-h436/user-microservice.webp&quot; width=&quot;625&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source: &lt;a href=&quot;http://pixabay.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;pixabay.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Step 2 - User Microservice&lt;/h2&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here we will quickly go to the technology stack that we are going to use in our implementation.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Initialization details&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-828dNCY8ZiE/YC9zk6mnsWI/AAAAAAAAAbc/F3P1E_5pqbgmopZ1DAu_sEozcfUgfRpKACLcBGAsYHQ/spring-initializer-user-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;739&quot; data-original-width=&quot;1503&quot; height=&quot;305&quot; src=&quot;https://lh3.googleusercontent.com/-828dNCY8ZiE/YC9zk6mnsWI/AAAAAAAAAbc/F3P1E_5pqbgmopZ1DAu_sEozcfUgfRpKACLcBGAsYHQ/w622-h305/spring-initializer-user-service.webp&quot; width=&quot;622&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Spring Initialzr - User Service&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt;&amp;nbsp;Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt;&amp;nbsp;Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt;&amp;nbsp;2.4.2&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-user-microservice&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-user-microservice&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Agnasarp User Microservice&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.user&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt;&amp;nbsp;Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt;&amp;nbsp;8&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Web&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Data JPA&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;H2 Database&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small (2mb) footprint. Supports embedded and server modes as well as a browser based console application.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Lomok&lt;/i&gt;:&lt;/b&gt;&amp;nbsp;Java annotation library which helps to reduce boilerplate code.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Then, we will import the project into IntelliJ Idea.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-oX-Ls8Q9cDY/YC-UVPWITUI/AAAAAAAAAbo/XN3NlYwukr0hL2kXlQ77t1kjTJTsYYpkACLcBGAsYHQ/project-structure-user-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;698&quot; data-original-width=&quot;373&quot; height=&quot;597&quot; src=&quot;https://lh3.googleusercontent.com/-oX-Ls8Q9cDY/YC-UVPWITUI/AAAAAAAAAbo/XN3NlYwukr0hL2kXlQ77t1kjTJTsYYpkACLcBGAsYHQ/w319-h597/project-structure-user-service.webp&quot; width=&quot;319&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small; text-align: center;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Project structure of user service in IntelliJ Idea&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;pom.xml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-user-microservice&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-user-microservice&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp User Microservice&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;com.h2database&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;h2&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;configuration&amp;gt;&lt;br /&gt;					&amp;lt;excludes&amp;gt;&lt;br /&gt;						&amp;lt;exclude&amp;gt;&lt;br /&gt;							&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;							&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;						&amp;lt;/exclude&amp;gt;&lt;br /&gt;					&amp;lt;/excludes&amp;gt;&lt;br /&gt;				&amp;lt;/configuration&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;server:&lt;br /&gt;  port: 8380&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;AgnasarpUserMicroserviceApplication.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.context.annotation.Bean;&lt;br /&gt;import org.springframework.web.client.RestTemplate;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;public class AgnasarpUserMicroserviceApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(AgnasarpUserMicroserviceApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Bean&lt;br /&gt;    RestTemplate restTemplate() {&lt;br /&gt;        return new RestTemplate();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;UserController.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user.controller;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.user.entity.User;&lt;br /&gt;import com.agnasarp.user.service.UserService;&lt;br /&gt;import com.agnasarp.user.vo.ResponseTemplateVo;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.web.bind.annotation.*;&lt;br /&gt;&lt;br /&gt;@RestController&lt;br /&gt;@RequestMapping(&quot;/users&quot;)&lt;br /&gt;public class UserController {&lt;br /&gt;    private static final Logger log = LoggerFactory.getLogger(UserController.class);&lt;br /&gt;    @Autowired&lt;br /&gt;    private UserService userService;&lt;br /&gt;&lt;br /&gt;    @PostMapping(&quot;/&quot;)&lt;br /&gt;    public User saveUser(@RequestBody User user) {&lt;br /&gt;        log.info(&quot;Inside saveUser method of UserController&quot;);&lt;br /&gt;        return userService.saveUser(user);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @GetMapping(&quot;/{id}&quot;)&lt;br /&gt;    public ResponseTemplateVo getUserById(@PathVariable(&quot;id&quot;) Long userId) {&lt;br /&gt;        log.info(&quot;Inside getUserById method of UserController&quot;);&lt;br /&gt;        return userService.getUserWithDepartment(userId);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;UserService.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user.service;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.user.entity.User;&lt;br /&gt;import com.agnasarp.user.repository.UserRepository;&lt;br /&gt;import com.agnasarp.user.vo.Department;&lt;br /&gt;import com.agnasarp.user.vo.ResponseTemplateVo;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;import org.springframework.web.client.RestTemplate;&lt;br /&gt;&lt;br /&gt;@Service&lt;br /&gt;public class UserService {&lt;br /&gt;    private static final Logger log = LoggerFactory.getLogger(UserService.class);&lt;br /&gt;    @Autowired&lt;br /&gt;    private UserRepository userRepository;&lt;br /&gt;    @Autowired&lt;br /&gt;    private RestTemplate restTemplate;&lt;br /&gt;&lt;br /&gt;    public User saveUser(User user) {&lt;br /&gt;        log.info(&quot;Inside saveUser method of UserService&quot;);&lt;br /&gt;        return userRepository.save(user);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public ResponseTemplateVo getUserWithDepartment(Long userId) {&lt;br /&gt;        log.info(&quot;Inside getUserWithDepartment method of UserService&quot;);&lt;br /&gt;        ResponseTemplateVo responseTemplateVo = new ResponseTemplateVo();&lt;br /&gt;        User user = userRepository.getUserByUserId(userId);&lt;br /&gt;        Department department = restTemplate.getForObject(&quot;http://localhost:8280/&quot; +&lt;br /&gt;                &quot;departments/&quot; + userId, Department.class);&lt;br /&gt;        responseTemplateVo.setUser(user);&lt;br /&gt;        responseTemplateVo.setDepartment(department);&lt;br /&gt;        return responseTemplateVo;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;UserRepository.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user.repository;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.user.entity.User;&lt;br /&gt;import org.springframework.data.jpa.repository.JpaRepository;&lt;br /&gt;import org.springframework.stereotype.Repository;&lt;br /&gt;&lt;br /&gt;@Repository&lt;br /&gt;public interface UserRepository extends JpaRepository&amp;lt;User, Long&amp;gt; {&lt;br /&gt;    User getUserByUserId(Long userId);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;User.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user.entity;&lt;br /&gt;&lt;br /&gt;import lombok.AllArgsConstructor;&lt;br /&gt;import lombok.Data;&lt;br /&gt;import lombok.NoArgsConstructor;&lt;br /&gt;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.GenerationType;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@Data&lt;br /&gt;@NoArgsConstructor&lt;br /&gt;@AllArgsConstructor&lt;br /&gt;public class User {&lt;br /&gt;    @Id&lt;br /&gt;    @GeneratedValue(strategy = GenerationType.AUTO)&lt;br /&gt;    private Long userId;&lt;br /&gt;    private String firstName;&lt;br /&gt;    private String lastName;&lt;br /&gt;    private Long departmentId;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;View Objects&lt;/h3&gt;&lt;div&gt;We need the attached department details of the user, therefore we have to create a &lt;b&gt;Department &lt;/b&gt;view object here in the user microservice. And we need to show user details and department details collectively in the response, for that we have to create&amp;nbsp;&lt;b&gt;ResponseTemplateVo.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;h4&gt;Department.java&lt;/h4&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user.vo;&lt;br /&gt;&lt;br /&gt;import lombok.AllArgsConstructor;&lt;br /&gt;import lombok.Data;&lt;br /&gt;import lombok.NoArgsConstructor;&lt;br /&gt;&lt;br /&gt;@Data&lt;br /&gt;@NoArgsConstructor&lt;br /&gt;@AllArgsConstructor&lt;br /&gt;public class Department {&lt;br /&gt;    private Long departmentId;&lt;br /&gt;    private String departmentName;&lt;br /&gt;    private String departmentAddress;&lt;br /&gt;    private String departmentCode;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;ResponseTemplateVo.java&lt;/h4&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;package com.agnasarp.user.vo;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.user.entity.User;&lt;br /&gt;import lombok.AllArgsConstructor;&lt;br /&gt;import lombok.Data;&lt;br /&gt;import lombok.NoArgsConstructor;&lt;br /&gt;&lt;br /&gt;@Data&lt;br /&gt;@NoArgsConstructor&lt;br /&gt;@AllArgsConstructor&lt;br /&gt;public class ResponseTemplateVo {&lt;br /&gt;    private User user;&lt;br /&gt;    private Department department;&lt;br /&gt;&lt;br /&gt;    public void setUser(User user) {&lt;br /&gt;        this.user = user;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setDepartment(Department department) {&lt;br /&gt;        this.department = department;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Service call&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Create user scenario&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;cURL&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;background-color: #fffffe; line-height: 18px;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;curl --location --request POST &#39;http://localhost:8380/users/&#39; \&lt;br /&gt;--header &#39;Content-Type: application/json&#39; \&lt;br /&gt;--data-raw &#39;{&lt;br /&gt;    &quot;firstName&quot;:&quot;John&quot;,&lt;br /&gt;    &quot;lastName&quot;:&quot;Smith&quot;,&lt;br /&gt;    &quot;departmentId&quot;:&quot;1&quot;&lt;br /&gt;}&#39;&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Postman call&lt;/h4&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-5qhmHWZ_G_g/YC-foUom-yI/AAAAAAAAAb0/90GOeImHn9oBYK1CBoKk-aitDqYxvU_cgCLcBGAsYHQ/save-user-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;506&quot; data-original-width=&quot;1184&quot; height=&quot;271&quot; src=&quot;https://lh3.googleusercontent.com/-5qhmHWZ_G_g/YC-foUom-yI/AAAAAAAAAb0/90GOeImHn9oBYK1CBoKk-aitDqYxvU_cgCLcBGAsYHQ/w636-h271/save-user-service.webp&quot; width=&quot;636&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Get user scenario&lt;/i&gt;: As we have designed to get user details with the assigned department, we have to create a department first with the save department service as in the &lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;previous post&lt;/a&gt;. Otherwise, the department object will be null.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;cURL&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;curl --location --request GET &#39;http://localhost:8380/users/1&#39;&lt;/pre&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Postman call&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-jfLPFeLiLQQ/YC-g9GBuldI/AAAAAAAAAcA/n9Cd0XR8B_o7ufNBcwOrgTvk69vaaH3gQCLcBGAsYHQ/get-user-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;552&quot; data-original-width=&quot;1184&quot; height=&quot;286&quot; src=&quot;https://lh3.googleusercontent.com/-jfLPFeLiLQQ/YC-g9GBuldI/AAAAAAAAAcA/n9Cd0XR8B_o7ufNBcwOrgTvk69vaaH3gQCLcBGAsYHQ/w615-h286/get-user-service.webp&quot; width=&quot;615&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now we have created the User Microservice successfully as same as the Department Service in the previous post. As the next step, we will create a service registry which is another important component in the microservice architecture. You can download the complete source code from GitHub with the below link.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Download source from github:&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: #f2f7ff;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-user-microservice/tree/release/1.0.0&quot; target=&quot;_blank&quot;&gt;Download user-service/download/button/#2e86de&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 1 - Department&amp;nbsp;Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/3095086178292855724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3095086178292855724'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3095086178292855724'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html' title='Complete microservices architecture with real examples - Step 2 - User microservice'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-y4PNWuanX04/YDB-jHiwwyI/AAAAAAAAAcM/yhM_V7jYFCkO_OMszwAMyUWc4pi4Co2bwCLcBGAsYHQ/s72-w625-h436-c/user-microservice.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-6512235486893117039</id><published>2021-02-17T00:30:00.007-08:00</published><updated>2021-02-19T04:21:13.626-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Complete microservices architecture with real examples - Step 1 - Department microservice</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Hello everyone! Today we are going to show you how you can create a microservice as a part of a complete microservices architecture that we will implement step by step in future posts. You can see the full architecture in the below diagram.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-9pPlq2FjJgk/YC1B80PsujI/AAAAAAAAAZ8/uwxbmx0ieZY1AEu9Eee3MkuyQ-IHCMPQgCLcBGAsYHQ/microservices-architecture.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;416&quot; src=&quot;https://lh3.googleusercontent.com/-9pPlq2FjJgk/YC1B80PsujI/AAAAAAAAAZ8/uwxbmx0ieZY1AEu9Eee3MkuyQ-IHCMPQgCLcBGAsYHQ/w595-h416/microservices-architecture.webp&quot; width=&quot;595&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Microservices Architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;As the first step, we will implement &lt;b&gt;Department Service&lt;/b&gt; in this post. You can find all details step by step of Department&amp;nbsp;Service with all source code.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Step 1 - Department&amp;nbsp;Microservice&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here we will quickly go to the technology stack that we are going to use in our implementation.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;Initialization details&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-CUDr3qwkVXg/YC1MHbPoezI/AAAAAAAAAa4/0oJQ2-i5SGkN28hol6b9aFgb_B2R1gMUgCLcBGAsYHQ/spring-initializer-department-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;735&quot; data-original-width=&quot;1498&quot; height=&quot;319&quot; src=&quot;https://lh3.googleusercontent.com/-CUDr3qwkVXg/YC1MHbPoezI/AAAAAAAAAa4/0oJQ2-i5SGkN28hol6b9aFgb_B2R1gMUgCLcBGAsYHQ/w651-h319/spring-initializer-department-service.webp&quot; width=&quot;651&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Spring Initialzr - Department Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Project build tool:&lt;/b&gt; Maven&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language:&lt;/b&gt; Java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring boot:&lt;/b&gt; 2.4.2&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project Metadata&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Group:&amp;nbsp;&lt;/b&gt;com.agnasarp&lt;/li&gt;&lt;li&gt;&lt;b&gt;Artifact:&amp;nbsp;&lt;/b&gt;agnasarp-department-microservice&lt;/li&gt;&lt;li&gt;&lt;b&gt;Name:&amp;nbsp;&lt;/b&gt;agnasarp-department-microservice&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description:&amp;nbsp;&lt;/b&gt;Agnasarp Department Microservice&lt;/li&gt;&lt;li&gt;&lt;b&gt;Package name:&amp;nbsp;&lt;/b&gt;com.agnasarp.department&lt;/li&gt;&lt;li&gt;&lt;b&gt;Packaging:&lt;/b&gt; Jar&lt;/li&gt;&lt;li&gt;&lt;b&gt;Java&amp;nbsp; version:&lt;/b&gt; 8&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Web&lt;/i&gt;:&lt;/b&gt; Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Spring Data JPA&lt;/i&gt;:&lt;/b&gt; Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;H2 Database&lt;/i&gt;:&lt;/b&gt; Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small (2mb) footprint. Supports embedded and server modes as well as a browser based console application.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Lomok&lt;/i&gt;:&lt;/b&gt; Java annotation library which helps to reduce boilerplate code.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Then, we will import the project into IntelliJ Idea.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-5v_p5GtXbMA/YC1LZEWaPOI/AAAAAAAAAaw/4EtRKn-EaigZmES5c3xTfPr5XL96lPREgCLcBGAsYHQ/project-structure-department-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;588&quot; data-original-width=&quot;401&quot; height=&quot;486&quot; src=&quot;https://lh3.googleusercontent.com/-5v_p5GtXbMA/YC1LZEWaPOI/AAAAAAAAAaw/4EtRKn-EaigZmES5c3xTfPr5XL96lPREgCLcBGAsYHQ/w332-h486/project-structure-department-service.webp&quot; width=&quot;332&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Project structure of department service in IntelliJ Idea&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h3&gt;pom.xml&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-department-microservice&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-department-microservice&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp Department Microservice&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;com.h2database&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;h2&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;configuration&amp;gt;&lt;br /&gt;					&amp;lt;excludes&amp;gt;&lt;br /&gt;						&amp;lt;exclude&amp;gt;&lt;br /&gt;							&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;&lt;br /&gt;							&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;&lt;br /&gt;						&amp;lt;/exclude&amp;gt;&lt;br /&gt;					&amp;lt;/excludes&amp;gt;&lt;br /&gt;				&amp;lt;/configuration&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;application.yml&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;server:&lt;br /&gt;  port: 8280&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;AgnasarpDepartmentMicroserviceApplication.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;package com.agnasarp.department;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;public class AgnasarpDepartmentMicroserviceApplication {&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		SpringApplication.run(AgnasarpDepartmentMicroserviceApplication.class, args);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;DepartmentController.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;package com.agnasarp.department.controller;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.department.entity.Department;&lt;br /&gt;import com.agnasarp.department.service.DepartmentService;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.web.bind.annotation.*;&lt;br /&gt;&lt;br /&gt;@RestController&lt;br /&gt;@RequestMapping(&quot;/departments&quot;)&lt;br /&gt;&lt;br /&gt;public class DepartmentController {&lt;br /&gt;    private static final Logger log = LoggerFactory.getLogger(DepartmentController.class);&lt;br /&gt;    @Autowired&lt;br /&gt;    private DepartmentService departmentService;&lt;br /&gt;&lt;br /&gt;    @PostMapping(&quot;/&quot;)&lt;br /&gt;    public Department saveDepartment(@RequestBody Department department) {&lt;br /&gt;        log.info(&quot;Inside saveDepartment method of DepartmentController&quot;);&lt;br /&gt;        return departmentService.saveDepartment(department);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @GetMapping(&quot;/{id}&quot;)&lt;br /&gt;    public Department getDepartmentById(@PathVariable(&quot;id&quot;) Long departmentId) {&lt;br /&gt;        log.info(&quot;Inside getDepartmentById method of DepartmentController&quot;);&lt;br /&gt;        return departmentService.getDepartmentById(departmentId);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;DepartmentService.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;package com.agnasarp.department.service;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.department.entity.Department;&lt;br /&gt;import com.agnasarp.department.repository.DepartmentRepository;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;&lt;br /&gt;@Service&lt;br /&gt;public class DepartmentService {&lt;br /&gt;&lt;br /&gt;    private static final Logger log = LoggerFactory.getLogger(DepartmentService.class);&lt;br /&gt;    @Autowired&lt;br /&gt;    private DepartmentRepository departmentRepository;&lt;br /&gt;&lt;br /&gt;    public Department saveDepartment(Department department) {&lt;br /&gt;        log.info(&quot;Inside saveDepartment method of DepartmentService&quot;);&lt;br /&gt;        return departmentRepository.save(department);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Department getDepartmentById(Long departmentId) {&lt;br /&gt;        log.info(&quot;Inside getDepartmentById method of DepartmentService&quot;);&lt;br /&gt;        return departmentRepository.getDepartmentByDepartmentId(departmentId);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;DepartmentRepository.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;package com.agnasarp.department.repository;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.department.entity.Department;&lt;br /&gt;import org.springframework.data.jpa.repository.JpaRepository;&lt;br /&gt;import org.springframework.stereotype.Repository;&lt;br /&gt;&lt;br /&gt;@Repository&lt;br /&gt;public interface DepartmentRepository extends JpaRepository&amp;lt;Department, Long&amp;gt; {&lt;br /&gt;    Department getDepartmentByDepartmentId(Long departmentId);&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-size: 13px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Department.java&lt;/h3&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;package com.agnasarp.department.entity;&lt;br /&gt;&lt;br /&gt;import lombok.AllArgsConstructor;&lt;br /&gt;import lombok.Data;&lt;br /&gt;import lombok.NoArgsConstructor;&lt;br /&gt;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.GenerationType;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@Data&lt;br /&gt;@AllArgsConstructor&lt;br /&gt;@NoArgsConstructor&lt;br /&gt;public class Department {&lt;br /&gt;    @Id&lt;br /&gt;    @GeneratedValue(strategy = GenerationType.AUTO)&lt;br /&gt;    private Long departmentId;&lt;br /&gt;    private String departmentName;&lt;br /&gt;    private String departmentAddress;&lt;br /&gt;    private String departmentCode;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Service call&lt;/h3&gt;&lt;div&gt;&lt;i&gt;Create department scenario&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;cURL&lt;/h4&gt;&lt;div&gt;&lt;div style=&quot;background-color: #fffffe; line-height: 18px;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;curl --location --request POST &#39;http://localhost:8280/departments/&#39; \&lt;br /&gt;--header &#39;Content-Type: application/json&#39; \&lt;br /&gt;--data-raw &#39;{&lt;br /&gt;    &quot;departmentName&quot;:&quot;IT&quot;,&lt;br /&gt;    &quot;departmentAddress&quot;:&quot;Colombo 07, Srilanka&quot;,&lt;br /&gt;    &quot;departmentCode&quot;:&quot;IT-001&quot;&lt;br /&gt;}&#39;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;Postman call&lt;/h4&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-ebecKqOXU7k/YC1xYiQlqWI/AAAAAAAAAbE/y8jK-N6L9RET8gJEn5iAZeM8o9T3FwcXgCLcBGAsYHQ/save-department-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;545&quot; data-original-width=&quot;1182&quot; height=&quot;296&quot; src=&quot;https://lh3.googleusercontent.com/-ebecKqOXU7k/YC1xYiQlqWI/AAAAAAAAAbE/y8jK-N6L9RET8gJEn5iAZeM8o9T3FwcXgCLcBGAsYHQ/w640-h296/save-department-service.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;Get department scenario&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;cURL&lt;/h4&gt;&lt;div&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;curl --location --request GET &#39;http://localhost:8280/departments/1&#39; \&lt;br /&gt;--data-raw &#39;&#39;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;Postman call&lt;/h4&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-wIEkR_j_iB4/YC1yHwpbJgI/AAAAAAAAAbM/HIZFosVPYG4JFmQ-vjWd5J3frnP9wIXDwCLcBGAsYHQ/get-department-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;467&quot; data-original-width=&quot;1180&quot; height=&quot;253&quot; src=&quot;https://lh3.googleusercontent.com/-wIEkR_j_iB4/YC1yHwpbJgI/AAAAAAAAAbM/HIZFosVPYG4JFmQ-vjWd5J3frnP9wIXDwCLcBGAsYHQ/w638-h253/get-department-service.webp&quot; width=&quot;638&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we have created the Department Microservice successfully. As the next step, we will create another microservice because we need at least two microservices to get an idea about the whole microservices architecture. You can download the complete source code from GitHub with the below link.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: #f2f7ff;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-department-microservice/tree/release/1.0.0&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;h3 style=&quot;background-color: #fffffe; font-family: &amp;quot;Times New Roman&amp;quot;; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-2-user-microservice.html&quot; target=&quot;_blank&quot;&gt;Go to Step 2 - User Microservice&lt;/a&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/6512235486893117039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6512235486893117039'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6512235486893117039'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/02/complete-microservices-architecture-step-1-department-microservice.html' title='Complete microservices architecture with real examples - Step 1 - Department microservice'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-9pPlq2FjJgk/YC1B80PsujI/AAAAAAAAAZ8/uwxbmx0ieZY1AEu9Eee3MkuyQ-IHCMPQgCLcBGAsYHQ/s72-w595-h416-c/microservices-architecture.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-3720444633236379343</id><published>2021-02-08T03:30:00.051-08:00</published><updated>2021-02-19T19:16:31.150-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>An introduction to circuit breaker design pattern with a guide for using it practically in day-to-day development</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;If your home has been powered by electricity, you have definitely heard about &quot;Breakers&quot; or &quot;Breaker Switch&quot;. What does breaker do for us in the home grid? Actually, when there is a short-circuit or leakage the breaker switch&amp;nbsp;will open and electricity will cut down. It will save our home and all appliances from that kind of damages. We can manually close the switch once the circuit came back to normal. This is the fault-tolerant strategy in our home grid.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-rG5T7-fis54/YCkpD7uaAzI/AAAAAAAAAYE/wKI2QpfDa5gq8JYfNh4ktgbsNfbYlfRIgCLcBGAsYHQ/circuit-breaker.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;420&quot; src=&quot;https://lh3.googleusercontent.com/-rG5T7-fis54/YCkpD7uaAzI/AAAAAAAAAYE/wKI2QpfDa5gq8JYfNh4ktgbsNfbYlfRIgCLcBGAsYHQ/w601-h420/circuit-breaker.webp&quot; width=&quot;601&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://pixabay.com/photos/circuit-breakers-rcds-fault-current-1167327/&quot; rel=&quot;nofollow&quot; style=&quot;text-align: center;&quot; target=&quot;_blank&quot;&gt;pixabay.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Likewise, we should definitely have a mechanism for fault tolerance in our software applications. Here we are mainly focusing on fault tolerance in microservices. Today&#39;s software systems are moving to microservices architecture from monolithic architecture. We will create a number of granular independent microservices that can easily maintain in this architecture. There will be different service consumers like web applications, mobile applications that are calling microservices remotely to serve their customers. We might see even microservices may call other microservices that reside in the same system as well as in different 3rd party systems. More or less we have to face when the calling microservice is unavailable or not responsive. We have to have a successful fault-tolerant mechanism to keep the whole system up and running. The circuit breaker design pattern will come to play as a solution to that problem.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;When we talk about a remote service like microservices, we are mainly considering two aspects. They are,&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Availability of the remote service&lt;/li&gt;&lt;li&gt;Responsiveness of the remote service&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When it comes to responsiveness, the service consumer can wait until the remote service will return a response. But it is not a good idea to wait for a considerably longer period of time because it will affect badly the end-user experience. We need to set some timeout values inside service consumers for remote services. There may be different ways to pick a timeout value. One method of selecting a value is doubling the average response time. For example, if some remote services have a 2000milliseconds(ms) average response time, we can pick the timeout value is 4000ms.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;timeout = average response time x 2&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;= 2000ms x 2&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;= 4000ms&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Though it seems pretty much OK we will face a huge problem when the remote service creates a resource in a backend layer like databases. Suppose that the underlying remote service is placing orders. If there is a delay in responding the service consumer will timeout the request and prompt ultimately a failure to process the request but the order has been taken place in the background. Since the service consumer is not aware of this, it will again place a new request creating finally a duplicate of the request. There should have been a complex logic to catch and eliminate this kind of duplicate requests. As a quick solution, we can optimize the timeout value further. Instead of double the average response time, we can double the maximum response time that takes to serve the request successfully at some point (max under load). Suppose 5000ms as the max underload the timeout value will be,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;timeout = max underload x 2&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;= 5000ms x 2&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;= 10000ms&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;The service consumer will have to wait until 10000ms (10s) to get a response. This is completely unacceptable as it may badly affect the user experience. Then the circuit breaker pattern is the solution for the problem we have.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-k7o-_67JNvs/YCkpaTtkSaI/AAAAAAAAAYM/2FJTLHkUcy8bRkFxnWxs4fDNWHyt8-VhACLcBGAsYHQ/circuit-breaker-2.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;385&quot; src=&quot;https://lh3.googleusercontent.com/-k7o-_67JNvs/YCkpaTtkSaI/AAAAAAAAAYM/2FJTLHkUcy8bRkFxnWxs4fDNWHyt8-VhACLcBGAsYHQ/w550-h385/circuit-breaker-2.webp&quot; width=&quot;550&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The circuit breaker is residing between the service consumer and the microservice and it is continuously monitoring the microservice.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;When there is not anything special, the circuit breaker is in the closed state, and any service request goes to the microservice, and the service consumer gets the expected response. In this scenario, the microservice is available and responsive.&amp;nbsp;&lt;/li&gt;&lt;li&gt;If the microservice is down or unresponsive, the circuit breaker detects that and changes its state to open. Unlike the timeout scenario, the service consumer gets a meaningful response with the unavailability of the microservice to serve the request in just a few milliseconds, for example, in 20ms.&lt;/li&gt;&lt;li&gt;Meanwhile, the circuit breaker checks the availability of the microservice but it is still unavailable or unresponsive.&lt;/li&gt;&lt;li&gt;If the microservice is available, then the circuit breaker will set its status from open to closed and it will route service requests from the service consumer to the microservice and returns the expected responses.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;We will look at the function of monitoring the microservice by the circuit breaker. There can be 3 types of monitoring mechanisms, and we can say 3 types of circuit breakers as well for them. They are the simple heartbeat, synthetic transactions, and real-suer monitoring. We will check the capability of each mechanism.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Simple heartbeat&lt;/h3&gt;&lt;div&gt;This is really about checking the health of the microservice. When the service is available, the breaker will understand the service is up and running and available to serve but does not have an idea about how long it will take to serve, which means no idea about responsiveness. Therefore this simple heartbeat is not ideal for circuit breaking.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Synthetic transactions&lt;/h3&gt;&lt;div&gt;Here, we have to use fake transaction which generates only for testing the microservice whether it is available and responsive. We have to face few problems with this mechanism. One is we can only check very few scenarios. If we apply the strategy to order placing service, we will end up with certain types of orders for these fake transactions so all scenarios will not be covered. On the other hand, we have to request from all downstream systems even from reporting tools not to proceed with these dummy data or payload and that will be really awful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Real-user monitoring&lt;/h3&gt;&lt;div&gt;We use only real transactions for this monitoring. Here it is used trend analysis rather than the timeout. If we suppose there are 10 requests having response time in ms as 1.6, 2.0, 2.3, 1.9, 2.2, 2.3, 2.5, 3.0, 4.5, 5.8. Then there is a trend to increase the response time. Most of the time this analysis will be a standard deviation analysis since there are ups and downs. For example, if the response time is greater than 3 standard deviations from the mean, the circuit will be opened. If the circuit is in this state all the time, then the service consumer is unable to get expected service responses at all. To overcome this the circuit breaker will move from an open to half-open state. Here, it will allow passing through a limited number of requests to microservices. This percentage can be kept as configurable and let&#39;s say 1 out of 10 requests. the breaker will try this and if it got 6.9ms as the response time still it will be in a half-open state because the responsiveness is still not aligned with the expected value. If it will suddenly mark 1.6ms as the response time, then the breaker will close the circuit, and the route of the request&amp;nbsp;is back to normal.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Practical implementation&lt;/h3&gt;&lt;div&gt;We have created sample microservices with hystrix to describe the circuit breaker functionality. We have used spring initializer to initiate our services and used Web, Rest Repositories, and Actuator dependencies for&amp;nbsp;agnasarp-hystrix-employee-service and Web, Actuator, Hystrix, and Hystrix Dashboard for&amp;nbsp;agnasarp-hystrix-department-service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Microservice:&amp;nbsp;agnasarp-hystrix-employee-service&lt;/h3&gt;&lt;h4&gt;Project structure&lt;/h4&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-8uaBGQpR2C8/YCkps0yH79I/AAAAAAAAAYU/b1AETxp03ng21Qzw4mPFQrISdEQHbypywCLcBGAsYHQ/agnasarp-hystrix-employee-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;536&quot; data-original-width=&quot;366&quot; height=&quot;429&quot; src=&quot;https://lh3.googleusercontent.com/-8uaBGQpR2C8/YCkps0yH79I/AAAAAAAAAYU/b1AETxp03ng21Qzw4mPFQrISdEQHbypywCLcBGAsYHQ/w293-h429/agnasarp-hystrix-employee-service.webp&quot; width=&quot;293&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;pom.xml&lt;/h4&gt;&lt;div&gt;&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.4.2&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-hystrix-employee-service&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-hystrix-employee-service&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp Hystrix Employee Service&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-actuator&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-data-rest&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-family: &amp;quot;Courier New&amp;quot;; font-size: 13px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4&gt;application.properties&lt;/h4&gt;&lt;h4&gt;&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;pre&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;server.port = 8280&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/h4&gt;&lt;h4&gt;EmployeeServiceApplication.java&lt;/h4&gt;&lt;h4&gt;&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;package com.agnasarp.employeeservice;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;public class EmployeeServiceApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(EmployeeServiceApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-size: 13px; font-weight: 400; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;EmployeeServiceController.java&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;package com.agnasarp.employeeservice.controller;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.employeeservice.domain.Employee;&lt;br /&gt;import org.springframework.web.bind.annotation.GetMapping;&lt;br /&gt;import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;import org.springframework.web.bind.annotation.RestController;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@RestController&lt;br /&gt;public class EmployeeServiceController {&lt;br /&gt;&lt;br /&gt;    private static Map&amp;lt;String, List&amp;lt;Employee&amp;gt;&amp;gt; agnasarpDB = new HashMap&amp;lt;String, List&amp;lt;Employee&amp;gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    static {&lt;br /&gt;        agnasarpDB = new HashMap&amp;lt;String, List&amp;lt;Employee&amp;gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;        List&amp;lt;Employee&amp;gt; lst = new ArrayList&amp;lt;Employee&amp;gt;();&lt;br /&gt;        Employee std = new Employee(&quot;Max&quot;, &quot;Male&quot;);&lt;br /&gt;        lst.add(std);&lt;br /&gt;        std = new Employee(&quot;Lisa&quot;, &quot;Female&quot;);&lt;br /&gt;        lst.add(std);&lt;br /&gt;&lt;br /&gt;        agnasarpDB.put(&quot;it-department&quot;, lst);&lt;br /&gt;&lt;br /&gt;        lst = new ArrayList&amp;lt;Employee&amp;gt;();&lt;br /&gt;        std = new Employee(&quot;Steve&quot;, &quot;Male&quot;);&lt;br /&gt;        lst.add(std);&lt;br /&gt;        std = new Employee(&quot;Anne&quot;, &quot;Female&quot;);&lt;br /&gt;        lst.add(std);&lt;br /&gt;&lt;br /&gt;        agnasarpDB.put(&quot;finance-department&quot;, lst);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @GetMapping(value = &quot;/getEmployeeDetailsForDepartment/{department}&quot;)&lt;br /&gt;    public List&amp;lt;Employee&amp;gt; getEmployees(@PathVariable String department) {&lt;br /&gt;        System.out.println(&quot;Getting Employee details for &quot; + department);&lt;br /&gt;&lt;br /&gt;        List&amp;lt;Employee&amp;gt; employeeList = agnasarpDB.get(department);&lt;br /&gt;        if (employeeList == null) {&lt;br /&gt;            employeeList = new ArrayList&amp;lt;Employee&amp;gt;();&lt;br /&gt;            Employee std = new Employee(&quot;Not Found&quot;, &quot;N/A&quot;);&lt;br /&gt;            employeeList.add(std);&lt;br /&gt;        }&lt;br /&gt;        return employeeList;&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-size: 13px; font-weight: 400; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Employee.java&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;package com.agnasarp.employeeservice.domain;&lt;br /&gt;&lt;br /&gt;public class Employee {&lt;br /&gt;&lt;br /&gt;    private String name;&lt;br /&gt;    private String gender;&lt;br /&gt;&lt;br /&gt;    public Employee(String name, String gender) {&lt;br /&gt;        super();&lt;br /&gt;        this.name = name;&lt;br /&gt;        this.gender = gender;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getName() {&lt;br /&gt;        return name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setName(String name) {&lt;br /&gt;        this.name = name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getGender() {&lt;br /&gt;        return gender;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setGender(String gender) {&lt;br /&gt;        this.gender = gender;&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-size: 13px; font-weight: 400; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Service call&lt;/h4&gt;&lt;div&gt;&lt;b&gt;Request URL:&lt;/b&gt;&amp;nbsp;http://localhost:8280/getEmployeeDetailsForDepartment/it-department&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-i9bIJmGUgQA/YCkqB6HDvVI/AAAAAAAAAYc/mjqOP_KxN1wxFKlahu38QOL9ubbwgtUdgCLcBGAsYHQ/agnasarp-hystrix-employee-service-call.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;510&quot; data-original-width=&quot;678&quot; height=&quot;424&quot; src=&quot;https://lh3.googleusercontent.com/-i9bIJmGUgQA/YCkqB6HDvVI/AAAAAAAAAYc/mjqOP_KxN1wxFKlahu38QOL9ubbwgtUdgCLcBGAsYHQ/w564-h424/agnasarp-hystrix-employee-service-call.webp&quot; width=&quot;564&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Service consumer:&amp;nbsp;agnasarp-hystrix-department-service&lt;/h3&gt;&lt;h4&gt;Project structure&lt;/h4&gt;&lt;h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-Hc4W0gdWn_c/YCkqVPRnRAI/AAAAAAAAAYk/8rwZmOC8kakEX8NUUfAxss6NqQAiB8dTACLcBGAsYHQ/agnasarp-hystrix-department-service.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;497&quot; data-original-width=&quot;367&quot; height=&quot;452&quot; src=&quot;https://lh3.googleusercontent.com/-Hc4W0gdWn_c/YCkqVPRnRAI/AAAAAAAAAYk/8rwZmOC8kakEX8NUUfAxss6NqQAiB8dTACLcBGAsYHQ/w333-h452/agnasarp-hystrix-department-service.webp&quot; width=&quot;333&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;pom.xml&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;&lt;br /&gt;	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;	&amp;lt;parent&amp;gt;&lt;br /&gt;		&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;		&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;version&amp;gt;2.3.9.BUILD-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;		&amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;&lt;br /&gt;	&amp;lt;/parent&amp;gt;&lt;br /&gt;	&amp;lt;groupId&amp;gt;com.agnasarp&amp;lt;/groupId&amp;gt;&lt;br /&gt;	&amp;lt;artifactId&amp;gt;agnasarp-hystrix-department-service&amp;lt;/artifactId&amp;gt;&lt;br /&gt;	&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;	&amp;lt;name&amp;gt;agnasarp-hystrix-department-service&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;lt;description&amp;gt;Agnasarp Hystrix Department Service&amp;lt;/description&amp;gt;&lt;br /&gt;	&amp;lt;properties&amp;gt;&lt;br /&gt;		&amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;&lt;br /&gt;		&amp;lt;spring-cloud.version&amp;gt;Hoxton.BUILD-SNAPSHOT&amp;lt;/spring-cloud.version&amp;gt;&lt;br /&gt;	&amp;lt;/properties&amp;gt;&lt;br /&gt;	&amp;lt;dependencies&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-actuator&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-data-rest&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-hystrix&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-cloud-starter-netflix-hystrix-dashboard&amp;lt;/artifactId&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;		&amp;lt;dependency&amp;gt;&lt;br /&gt;			&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;			&amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;exclusions&amp;gt;&lt;br /&gt;				&amp;lt;exclusion&amp;gt;&lt;br /&gt;					&amp;lt;groupId&amp;gt;org.junit.vintage&amp;lt;/groupId&amp;gt;&lt;br /&gt;					&amp;lt;artifactId&amp;gt;junit-vintage-engine&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;/exclusion&amp;gt;&lt;br /&gt;			&amp;lt;/exclusions&amp;gt;&lt;br /&gt;		&amp;lt;/dependency&amp;gt;&lt;br /&gt;	&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;dependencyManagement&amp;gt;&lt;br /&gt;		&amp;lt;dependencies&amp;gt;&lt;br /&gt;			&amp;lt;dependency&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-cloud-dependencies&amp;lt;/artifactId&amp;gt;&lt;br /&gt;				&amp;lt;version&amp;gt;${spring-cloud.version}&amp;lt;/version&amp;gt;&lt;br /&gt;				&amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;&lt;br /&gt;				&amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;&lt;br /&gt;			&amp;lt;/dependency&amp;gt;&lt;br /&gt;		&amp;lt;/dependencies&amp;gt;&lt;br /&gt;	&amp;lt;/dependencyManagement&amp;gt;&lt;br /&gt;&lt;br /&gt;	&amp;lt;build&amp;gt;&lt;br /&gt;		&amp;lt;plugins&amp;gt;&lt;br /&gt;			&amp;lt;plugin&amp;gt;&lt;br /&gt;				&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;&lt;br /&gt;				&amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;			&amp;lt;/plugin&amp;gt;&lt;br /&gt;		&amp;lt;/plugins&amp;gt;&lt;br /&gt;	&amp;lt;/build&amp;gt;&lt;br /&gt;	&amp;lt;repositories&amp;gt;&lt;br /&gt;		&amp;lt;repository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Milestones&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/milestone&amp;lt;/url&amp;gt;&lt;br /&gt;		&amp;lt;/repository&amp;gt;&lt;br /&gt;		&amp;lt;repository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-snapshots&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Snapshots&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;			&amp;lt;snapshots&amp;gt;&lt;br /&gt;				&amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;			&amp;lt;/snapshots&amp;gt;&lt;br /&gt;		&amp;lt;/repository&amp;gt;&lt;br /&gt;	&amp;lt;/repositories&amp;gt;&lt;br /&gt;	&amp;lt;pluginRepositories&amp;gt;&lt;br /&gt;		&amp;lt;pluginRepository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Milestones&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/milestone&amp;lt;/url&amp;gt;&lt;br /&gt;		&amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;		&amp;lt;pluginRepository&amp;gt;&lt;br /&gt;			&amp;lt;id&amp;gt;spring-snapshots&amp;lt;/id&amp;gt;&lt;br /&gt;			&amp;lt;name&amp;gt;Spring Snapshots&amp;lt;/name&amp;gt;&lt;br /&gt;			&amp;lt;url&amp;gt;https://repo.spring.io/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;			&amp;lt;snapshots&amp;gt;&lt;br /&gt;				&amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;			&amp;lt;/snapshots&amp;gt;&lt;br /&gt;		&amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;	&amp;lt;/pluginRepositories&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-size: 13px; font-weight: 400; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;application.properties&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;server.port = 8380&lt;br /&gt;management.endpoints.web.exposure.include=*&lt;br /&gt;management.endpoints.web.base-path=/&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/h4&gt;&lt;h4&gt;DepartmentServiceApplication.java&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;package com.agnasarp.departmentservice;&lt;br /&gt;&lt;br /&gt;import org.springframework.boot.SpringApplication;&lt;br /&gt;import org.springframework.boot.autoconfigure.SpringBootApplication;&lt;br /&gt;import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;&lt;br /&gt;import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;&lt;br /&gt;import org.springframework.context.annotation.ComponentScan;&lt;br /&gt;&lt;br /&gt;@SpringBootApplication&lt;br /&gt;@EnableHystrixDashboard&lt;br /&gt;@EnableCircuitBreaker&lt;br /&gt;@ComponentScan(basePackages = &quot;com.agnasarp.departmentservice.*&quot;)&lt;br /&gt;public class DepartmentServiceApplication {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        SpringApplication.run(DepartmentServiceApplication.class, args);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #656565; font-size: 13px; font-weight: 400; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;DepartmentServiceController.java&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;package com.agnasarp.departmentservice.controller;&lt;br /&gt;&lt;br /&gt;import com.agnasarp.departmentservice.service.DepartmentServiceDelegate;&lt;br /&gt;import org.springframework.web.bind.annotation.GetMapping;&lt;br /&gt;import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;import org.springframework.web.bind.annotation.RestController;&lt;br /&gt;&lt;br /&gt;@RestController&lt;br /&gt;public class DepartmentServiceController {&lt;br /&gt;&lt;br /&gt;    private DepartmentServiceDelegate departmentServiceDelegate;&lt;br /&gt;&lt;br /&gt;    public DepartmentServiceController(DepartmentServiceDelegate departmentServiceDelegate) {&lt;br /&gt;        this.departmentServiceDelegate = departmentServiceDelegate;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @GetMapping(value = &quot;/getDepartmentDetails/{department}&quot;)&lt;br /&gt;    public String getEmployees(@PathVariable String department) {&lt;br /&gt;        System.out.println(&quot;Going to call employee service to get data!&quot;);&lt;br /&gt;        return departmentServiceDelegate.callEmployeeServiceAndGetData(department);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/h4&gt;&lt;h4&gt;DepartmentServiceDelegate.java&lt;/h4&gt;&lt;h4&gt;&lt;pre class=&quot;code-box short-b&quot; style=&quot;background: 0px 0px rgba(155, 155, 155, 0.1); border-radius: 2px; border: 1px solid rgba(155, 155, 155, 0.3); line-height: 1.4em; margin-bottom: 0px; margin-top: 0px; outline: 0px; padding: 10px; position: relative; text-align: left; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: #656565;&quot;&gt;&lt;span style=&quot;font-weight: 400; white-space: pre-wrap;&quot;&gt;package com.agnasarp.departmentservice.service;&lt;br /&gt;&lt;br /&gt;import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.context.annotation.Bean;&lt;br /&gt;import org.springframework.core.ParameterizedTypeReference;&lt;br /&gt;import org.springframework.http.HttpMethod;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;import org.springframework.web.client.RestTemplate;&lt;br /&gt;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;@Service&lt;br /&gt;public class DepartmentServiceDelegate {&lt;br /&gt;&lt;br /&gt;    @Autowired&lt;br /&gt;    RestTemplate restTemplate;&lt;br /&gt;&lt;br /&gt;    @Bean&lt;br /&gt;    public RestTemplate restTemplate() {&lt;br /&gt;        return new RestTemplate();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @HystrixCommand(fallbackMethod = &quot;callEmployeeServiceAndGetDataFallback&quot;)&lt;br /&gt;    public String callEmployeeServiceAndGetData(String department) {&lt;br /&gt;&lt;br /&gt;        System.out.println(&quot;Getting Department details for &quot; + department);&lt;br /&gt;&lt;br /&gt;        String response = restTemplate&lt;br /&gt;                .exchange(&quot;http://localhost:8280/getEmployeeDetailsForDepartment/{department}&quot;&lt;br /&gt;                        , HttpMethod.GET&lt;br /&gt;                        , null&lt;br /&gt;                        , new ParameterizedTypeReference&amp;lt;String&amp;gt;() {&lt;br /&gt;                        }, department).getBody();&lt;br /&gt;&lt;br /&gt;        System.out.println(&quot;Response Received as &quot; + response + &quot; -  &quot; + new Date());&lt;br /&gt;&lt;br /&gt;        return &quot;NORMAL FLOW !!! - Department Name -  &quot; + department + &quot; :::  &quot; +&lt;br /&gt;                &quot; Employee Details &quot; + response + &quot; -  &quot; + new Date();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @SuppressWarnings(&quot;unused&quot;)&lt;br /&gt;    private String callEmployeeServiceAndGetDataFallback(String department) {&lt;br /&gt;&lt;br /&gt;        System.out.println(&quot;Employee Service is down!!! fallback route enabled...&quot;);&lt;br /&gt;&lt;br /&gt;        return &quot;CIRCUIT BREAKER ENABLED!!! No Response From Employee Service at this moment. &quot; +&lt;br /&gt;                &quot; Service will be back shortly - &quot; + new Date();&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/h4&gt;&lt;h4&gt;Service call&lt;/h4&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Request URL:&lt;/b&gt;&amp;nbsp;http://localhost:8380/getDepartmentDetails/it-department&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the employee service up and running. the circuit breaker is in its closed state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-KJ7kOZH-OIg/YCkqpBSO8lI/AAAAAAAAAYs/2Bg_g6Y_kI07eoPTjxflxfXN13OYTm5IQCLcBGAsYHQ/agnasarp-hystrix-department-service-call.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;413&quot; data-original-width=&quot;1221&quot; height=&quot;203&quot; src=&quot;https://lh3.googleusercontent.com/-KJ7kOZH-OIg/YCkqpBSO8lI/AAAAAAAAAYs/2Bg_g6Y_kI07eoPTjxflxfXN13OYTm5IQCLcBGAsYHQ/w603-h203/agnasarp-hystrix-department-service-call.webp&quot; width=&quot;603&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the employee service is down. the circuit breaker is in its open state and the fallback method&amp;nbsp;&lt;b&gt;callEmployeeServiceAndGetDataFallback &lt;/b&gt;will be called.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-IRUI-YGMszQ/YCkqxEU2e-I/AAAAAAAAAYw/rtUnkbl52488V-iJbDUmzPiHjgaBTTiKACLcBGAsYHQ/agnasarp-hystrix-department-service-call-when-employeeservice-down.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;444&quot; data-original-width=&quot;1112&quot; height=&quot;229&quot; src=&quot;https://lh3.googleusercontent.com/-IRUI-YGMszQ/YCkqxEU2e-I/AAAAAAAAAYw/rtUnkbl52488V-iJbDUmzPiHjgaBTTiKACLcBGAsYHQ/w572-h229/agnasarp-hystrix-department-service-call-when-employeeservice-down.webp&quot; width=&quot;572&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Hystrix stream&lt;/h3&gt;&lt;div&gt;Hystrix is continuously monitoring the employee service therefore, once the service is back to normal then the circuit will change its state from open to close and we will get the success response from the department service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-8HP16y32kqE/YCkq-JiHyTI/AAAAAAAAAY4/uIRZkaUugJIDofg0zi6WabwNBRiwZkP1wCLcBGAsYHQ/hystrix-stream.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;798&quot; data-original-width=&quot;1134&quot; height=&quot;383&quot; src=&quot;https://lh3.googleusercontent.com/-8HP16y32kqE/YCkq-JiHyTI/AAAAAAAAAY4/uIRZkaUugJIDofg0zi6WabwNBRiwZkP1wCLcBGAsYHQ/w544-h383/hystrix-stream.webp&quot; width=&quot;544&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Hystrix dashboard&lt;/h3&gt;&lt;div&gt;Visual representation of the circuit in the hystrix dashboard&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-cBP6pAenU_0/YCkrFeL582I/AAAAAAAAAZA/X52KH2PWo1URJkBRQmEK0_ST4lIrTsXBACLcBGAsYHQ/hystrix-dashboard.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;570&quot; data-original-width=&quot;1374&quot; height=&quot;244&quot; src=&quot;https://lh3.googleusercontent.com/-cBP6pAenU_0/YCkrFeL582I/AAAAAAAAAZA/X52KH2PWo1URJkBRQmEK0_ST4lIrTsXBACLcBGAsYHQ/w588-h244/hystrix-dashboard.webp&quot; width=&quot;588&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, it is not working here, but if you configure it properly you will definitely get the visual representation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-RQexsQLTzwM/YCkrMkUp0-I/AAAAAAAAAZE/IvRNohq4U7sUtW3GVwrACGYg7FaKUPbawCLcBGAsYHQ/hystrix-dashboard-monitoring.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;565&quot; data-original-width=&quot;1473&quot; height=&quot;223&quot; src=&quot;https://lh3.googleusercontent.com/-RQexsQLTzwM/YCkrMkUp0-I/AAAAAAAAAZE/IvRNohq4U7sUtW3GVwrACGYg7FaKUPbawCLcBGAsYHQ/w581-h223/hystrix-dashboard-monitoring.webp&quot; width=&quot;581&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Download source from github:&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: #f2f7ff;&quot;&gt;&lt;a href=&quot;https://github.com/Agnasarp/agnasarp-hystrix-employee-service&quot; target=&quot;_blank&quot;&gt;Download employee-service/download/button/#2e86de&lt;/a&gt; &lt;a href=&quot;https://github.com/Agnasarp/agnasarp-hystrix-department-service&quot; target=&quot;_blank&quot;&gt;Download department-service/download/button/#2e86de&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/3720444633236379343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/02/an-introduction-to-circuit-breaker-design-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3720444633236379343'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3720444633236379343'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/02/an-introduction-to-circuit-breaker-design-pattern.html' title='An introduction to circuit breaker design pattern with a guide for using it practically in day-to-day development'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-rG5T7-fis54/YCkpD7uaAzI/AAAAAAAAAYE/wKI2QpfDa5gq8JYfNh4ktgbsNfbYlfRIgCLcBGAsYHQ/s72-w601-h420-c/circuit-breaker.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-779223806720217560</id><published>2021-02-04T03:30:00.008-08:00</published><updated>2021-05-23T00:38:02.294-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blockchain"/><title type='text'>The blockchain in a nutshell</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-hcvAy_Urv4A/YCkjfpFPnwI/AAAAAAAAAXk/ZiU6FtnemQgsPAS23BOMw7jvVCbXvH98wCLcBGAsYHQ/blockchain.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;439&quot; src=&quot;https://lh3.googleusercontent.com/-hcvAy_Urv4A/YCkjfpFPnwI/AAAAAAAAAXk/ZiU6FtnemQgsPAS23BOMw7jvVCbXvH98wCLcBGAsYHQ/w628-h439/blockchain.webp&quot; width=&quot;628&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://pixabay.com/illustrations/blockchain-technology-digital-4129138/&quot; rel=&quot;nofollow&quot; style=&quot;text-align: center;&quot; target=&quot;_blank&quot;&gt;pixabay.com&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;What is Blockchain?&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;It is a way of storing data thus we can say it is a database, but it differs from the generic database technology. Here, data cannot be deleted once records added to the system. All new data is stored in a unit called a block. Once a block filled with data it is chained to the last block in chronological order. This process happens in all nodes in the decentralized peer-to-peer network, then all know the record of the transaction and as a result of that, there is a nearly 0% probability of having a fraud in the system. Blockchain is the underlying technology of any cryptocurrency in the world. Some of the real world cryptocurrencies are XRP, Bitcoin, Ethereum, Dogecoin, Stellar, EOS, Cardano, Uniswap Protocol Token, Litecoin, Bitcoin Cash, Chainlink, Thether, Binance Coin, Polkadot, TRON, OMG Network, BUSD, Sushi, Brand Protocol, and Bitcoin SV. Though blockchain is the underlying technology of cryptocurrencies, both of them are not equal and we cannot perform an apple to apple comparison.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Storage Structure&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Normally, a database structures its data into tables whereas a blockchain, like its name implies, structures its data into chunks (blocks) that are chained together. Blocks have certain storage capacities and when filled they are chained to a previously filled block, making a data chain known as a blockchain. All new information that follows after a freshly added block is compiled into a newly formed block that will then be added to the chain when it is filled. This system basically makes an irreversible time sequence of data when applied in a decentralized nature.&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;Each block in the chain gets the exact timestamp when it is added to the chain.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Transaction Process&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If we look at the transaction process in blockchain technology, we can see a process that has few steps to validate and add a transaction to the system. When a transaction is entered into the system, it will transmit to all nodes/computers of the system with a peer-to-peer network. Then each node will try to resolve an equation to verify the validity of the transaction. If it can be confirmed as legitimate then it is clustered into a block. The newly created block then is chained together with the previous block in chronological order thus this chain of blocks which is the blockchain will maintain a clear, unchangeable, ordered transaction history across the network. Now the transaction is fully completed.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Attributes of Cryptocurrency&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There are few unique attributes of any cryptocurrency. Intrinsicly, blockchain is trustworthy because of the architecture of the system, and as a result of that, almost all cryptocurrencies are using this as the backend technology. There is not central governance like a bank and important decisions such as total supply etc. will be taken by the majority of the network. Always the assets will be maintained digitally and a physical form of them is not available at all. Because of these attributes, this technology can also be used in legal contracts and inventories.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Decentralization&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There are few central blockchain systems with a group of computers which are privately owned by organizations. But the majority of blockchain systems are decentralized and not governed by a central bank or any central authority. Instead, computers or group of computers in the network which is a=called as nodes will be maintained by individuals. By this decentralized nature of the system, there is not a possibility of happening a fraud, because if there is an error in a single node, there are multiple nodes with correct data to refer to.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Transparency&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Since the decentralized nature of the system, each and every transaction will be known by all nodes in the chain. Every node has its own copy of the chain and once a fresh block confirmed and added to the system, the chain of every node will get updated.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Security&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Once a block is added to the end of a blockchain, it is very difficult to go back and modify the contents of the block unless the majority has reached a consensus to do so. This is because each block contains its own hash, along with the hash of the block before it, as well as the previously mentioned timestamp. Hash codes are created by a mathematical function that converts digital information into a series of numbers and letters. If this information is edited in any way, the hash code. also changes. This is why it is important for security. Let’s say a hacker wants to modify a blockchain and steal Bitcoin from everyone else. If they changed their own individual copy, it would no longer match the copy of all the others. If everyone else would otherwise send their copies to each other, they would see that this one copy stands out and that the hacker version of the chain would be thrown out as illegitimate.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Advantages of Blockchain&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Accuracy of the Chain:&lt;/b&gt;&lt;/i&gt; There is not any human involvement in the transaction verification process, if anyone needs to introduce an error to the system, 51% majority of nodes in the chain would accept it, and there is nearly 0% probability for it.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Cost Reductions:&lt;/i&gt;&lt;/b&gt; Normally in any transaction processing institute like banks, the end-user has to pay a considerable amount for the verification process and governance but n the decentralized blockchain, there is not a 3rd party to verify the transaction, and there is not a processing fee or sometimes it may be a very small amount.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Decentralization:&lt;/i&gt;&lt;/b&gt; Whenever a new block is added to the blockchain, every computer on the network updates its blockchain to reflect the change. By spreading this information across the network, instead of storing it in a single central database, the blockchain becomes more difficult to compromise. If a copy of the blockchain fell into the hands of hackers, only one copy of the information would be compromised, not the entire network.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Efficient Transactions:&lt;/i&gt;&lt;/b&gt; Whereas financial institutions operate during business hours, five days a week, blockchain is working 24 hours a day, seven days a week, and 365 days a year. This is especially useful for cross-border trades, which usually take much longer due to time zone problems and the fact that all parties have to confirm payment processing. Transactions placed through a central authority can take up to several days.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Private Transactions:&lt;/i&gt;&lt;/b&gt; Many blockchain networks act as public databases, which means that anyone with an Internet connection can view a list of network transaction histories. That is, when a user performs public transactions, the blockchain records his unique code called the public key, not his personal data. If a person has made a purchase of Bitcoin on an exchange that requires identification, then the identity of the person is still linked to their blockchain address, but the transaction, even when linked to the person’s name, does not reveal any personal information.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Secure Transactions&lt;/i&gt;&lt;/b&gt;: After a computer has validated the transaction, it is added to the blockchain block. All blocks in the chain contains its own unique hash, along with the unique hash of the block before it. When information on a block is edited in any way, the hashcode of that block is changed, however, the hash code on the block after it would not.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Transparency&lt;/i&gt;&lt;/b&gt;: Blockchain has an open-source codebase. It also means that there is no real authority over who controls the Bitcoins code or how it is edited. It gives auditors the ability to review cryptocurrencies like Bitcoin for security. If most network users agree that the new version of the code with the upgrade is correct and valuable, then Bitcoin can be updated.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Banking the Unbanked&lt;/i&gt;&lt;/b&gt;:&amp;nbsp;According to the world bank, there are nearly 2 billion adults that do not have bank accounts or any means of storing their money or wealth. Almost all of these individuals live in developing countries where the economy is in its infancy and is entirely dependent on cash. Then they need to store this physical cash in hidden places in their homes or places of residence, leaving them with subject to robbery or unnecessary violence. Blockchains of the future are also looking for solutions not only to be a unit of account for the storage of wealth, but also for the storage of medical records, property rights and a number of other legal contracts.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Disadvantages of Blockchain&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Technology Cost&lt;/i&gt;&lt;/b&gt;:&amp;nbsp;Assuming electricity costs of $0.03~$0.05 per kilowatt-hour, mining costs exclusive of hardware expenses are about $5,000~$7,000 per coin. Despite the cost of bitcoin mining, customers continue to increase electricity bills to verify blockchain transactions For example, the poc system that bitcoin uses to validate transactions consumes a huge amount of computational power.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Speed Inefficiency&lt;/i&gt;&lt;/b&gt;:&amp;nbsp;At that rate, it’s estimated that the blockchain network can only manage about seven transactions per second (TPS). The inefficiency rate of Bitcoin is a perfect case study for the possible inefficiency of blockchain. Although other cryptocurrencies like Ethereum work better than bitcoin, they are still limited by blockchain.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Illegal Activity&lt;/i&gt;&lt;/b&gt;:&amp;nbsp;The most cited example of a blockchain used for illegal transactions is probably the Silk Road, an online dark web drug market that operated from February 2011 to October 2013, when the FBI shut it down. The website allowed users to search the website without tracking using the Tor browser and make illegal purchases in Bitcoin or other cryptocurrencies. Current US regulations require financial service providers to obtain information about their clients when opening accounts, verify the identity of each client, and confirm that the client does not appear on any list of known terrorist organizations. or suspicious.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Regulation&lt;/i&gt;&lt;/b&gt;:&amp;nbsp;While it is getting increasingly difficult and near impossible to end something like Bitcoin as its decentralized network grows, governments could theoretically make it illegal to own cryptocurrencies or participate in their networks. Many in the crypto space have expressed concern about government regulation of cryptocurrencies.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;What&#39;s Next for Blockchain?&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Blockchain had begun its journey in 1991 and now it has been almost thirty years being alive in the world. The technology is already utilized in monetary solutions but it has a massive capability of other use cases as well. Therefore, there are no doubt legacy companies will move into the technology but the problem is when it has to happen.&amp;nbsp;While looking into the distant future of blockchain is extremely exciting, new innovations are constantly entering the market promising greater and bolder use of technology. As active blockchain networks continue to bring real transformative change to many industries, we can predict future trends.&amp;nbsp;With the new radical way of storing data, the technology will be used in multiple areas such as banking and finance, currency, healthcare, records of property, smart contracts, supply chains, voting.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;Sources&lt;/b&gt;:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://www.investopedia.com/terms/b/blockchain.asp&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/779223806720217560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/02/the-blockchain-in-a-nutshell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/779223806720217560'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/779223806720217560'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/02/the-blockchain-in-a-nutshell.html' title='The blockchain in a nutshell'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-hcvAy_Urv4A/YCkjfpFPnwI/AAAAAAAAAXk/ZiU6FtnemQgsPAS23BOMw7jvVCbXvH98wCLcBGAsYHQ/s72-w628-h439-c/blockchain.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-1260674696352044890</id><published>2021-01-28T03:30:00.016-08:00</published><updated>2021-05-23T00:37:04.677-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Quantum Computing"/><title type='text'>The real engagement between BMW and Honeywell&#39;s H1 for the best supply chain strategy in the era as the first commercial use case in quantum computing.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-dyCyu4dU5q8/YCkh2Qowm5I/AAAAAAAAAXQ/2qjkRg1d7W4bHJ7LE0m-_Leyzxg-ZvHOwCLcBGAsYHQ/bmw-with-honeywell-h1.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;417&quot; src=&quot;https://lh3.googleusercontent.com/-dyCyu4dU5q8/YCkh2Qowm5I/AAAAAAAAAXQ/2qjkRg1d7W4bHJ7LE0m-_Leyzxg-ZvHOwCLcBGAsYHQ/w596-h417/bmw-with-honeywell-h1.webp&quot; width=&quot;596&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small; text-align: center;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;a href=&quot;https://www.pexels.com/photo/black-and-silver-bmw-emblem-3689532/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;www.pexels.com&lt;/a&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;a href=&quot;https://www.honeywell.com/us/en/company/quantum&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;www.honeywell.com&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;One of the most automobile giants, BMW takes a super exciting step into quantum computing which was just theoretical stuff in the recent past. They will work together with Honeywell&#39;s system model H1 to empower the speed and accuracy of strategies in their supply chain to streamline the process. They look forward to finding a solution to choose the right supplier at the right time considering all other factors like price and so on. In classical computing, there are limitations to optimize this kind of solutions. We have heard quantum computing as theoretical pieces of stuff in the recent past and now the time came to leverage problem solving with commercial quantum computers.&amp;nbsp;Julius Marcea, a BMW Group IT chief said,&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;blockquote&gt;&quot;We are excited to investigate the transformative potential of quantum computing on the automotive industry and are committed to extending the limits of engineering performance,&quot;&lt;/blockquote&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;BMW started evaluating this radical emerging technology in 2018 and they have a lot of ideas in which this technology can be used. This supply chain empowering is one of the things in that whole bunch of ideas. BMW currently is working with a startup, Entropica Labs and they are mostly working on software that can be run on quantum computers. The power and the capability of quantum computers can offer, will be unveiled with these experiments. In essence, we can get an idea about when can we get real advantages of quantum computing.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;A few quantum properties like superposition, entanglement, and interference are used in quantum computing. Normally, there is only 0 or 1 as the state of the basic unit of information, which is a &lt;b&gt;bit&lt;/b&gt; at a time in classical computing but the quantum version of bit, which is a &lt;b&gt;Qubit &lt;/b&gt;may be&amp;nbsp;either of those or maybe both 0 and 1 at the same time, which is known as superposition. Nowadays quantum computers have few dozens of Qubits but they can do lots of things than classic computers do. As an example, a quantum computer can perform calculations, especially in simulations and optimizations in just a few minutes, which a classic computer may take billions of years to complete. This is the super excitement behind quantum computing.&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;Sources&lt;/b&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://www.cnet.com/news/bmw-takes-first-steps-into-the-quantum-computing-revolution/&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/1260674696352044890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/01/bmw-with-quantum-computing-for-an-optimized-supply-chain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/1260674696352044890'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/1260674696352044890'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/01/bmw-with-quantum-computing-for-an-optimized-supply-chain.html' title='The real engagement between BMW and Honeywell&#39;s H1 for the best supply chain strategy in the era as the first commercial use case in quantum computing.'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-dyCyu4dU5q8/YCkh2Qowm5I/AAAAAAAAAXQ/2qjkRg1d7W4bHJ7LE0m-_Leyzxg-ZvHOwCLcBGAsYHQ/s72-w596-h417-c/bmw-with-honeywell-h1.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-34135396525936529</id><published>2021-01-26T03:30:00.009-08:00</published><updated>2021-05-23T00:36:33.723-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AR"/><category scheme="http://www.blogger.com/atom/ns#" term="Gadgets"/><category scheme="http://www.blogger.com/atom/ns#" term="VR"/><title type='text'>Another flagship product from Apple Inc. News about Apple&#39;s first VR headset</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-1a823600Tjs/YCke3k0TZeI/AAAAAAAAAWE/2_1bOHtO2w0X9aeQMjHZK6ADA67u3bANQCLcBGAsYHQ/apple-new-vr-headset.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;438&quot; src=&quot;https://lh3.googleusercontent.com/-1a823600Tjs/YCke3k0TZeI/AAAAAAAAAWE/2_1bOHtO2w0X9aeQMjHZK6ADA67u3bANQCLcBGAsYHQ/w625-h438/apple-new-vr-headset.webp&quot; width=&quot;625&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;a href=&quot;https://pixabay.com/photos/woman-vr-virtual-reality-technology-1418848/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;pixabay.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;One of the most reputed multinational technology companies, Apple Inc. is currently working on their first VR headset after the perceived obstacle of the development of the Apple Watch. This will be a major product category with a higher price tag as usual with all other Apple products. There is a plan to release the new augmented reality device in 2022 and it has to compete with the market leader, Facebook&#39;s Oculus and Sony&#39;s Playstation VR set, etc. Like other VR devices, it will create a 3D digital environment for watching videos and gaming.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Typically, Apple look forwards to spend its assets to deliver reliable and easy to use devices like smartphones, tablets, smartwatches, and music players but this time they have shifted into a different segment of the technology world with a different strategy of development with outside developers especially in the development of AR glasses. They expect that this will be a high-end, niche product with respect to the effort that they have put on.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;With the highest predicted price tag, Apple stores may sell only a few units per day as per an insider of the company and it will have to compete with the famous Oculus Quest. Apple is always going to use its powerful ingredients to build the product, the CPU and the display unit will have a higher capability in comparison to the rival products. The other special thing with this is, having a fan. To further reduce the device’s weight, Apple is going to use a fabric exterior. That’s a departure from the metal designs Apple uses for many products, though it&#39;s used plastic for devices like AirPods, which require to be light, and fabrics for the HomePod speaker to enhance acoustics.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;The prototype of the device includes external cameras that can be used to activate some extra AR features. At the same time, Apple is experimenting on how can enter text input into the device but it will not be guaranteed that the feature may come with the first version of the device. And there is another discussion on bundling the App Store with the device which runs on a different Operating System called &quot;rOS&quot;. Apple&#39;s ultimate target, the AR glasses need small, powerful, and efficient electronics in order to achieve advanced features. That can be achieved if they will deliver a less mainstream device as the first version and as a result of that, they will have the opportunity to develop underlying technologies well to succeed in the ultimate AR glasses.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;Sources&lt;/b&gt;:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://www.bloomberg.com/news/articles/2021-01-21/apple-s-first-vr-headset-to-be-niche-precursor-to-eventual-ar-glasses&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/34135396525936529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/01/news-about-Apples-first-VR-headset.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/34135396525936529'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/34135396525936529'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/01/news-about-Apples-first-VR-headset.html' title='Another flagship product from Apple Inc. News about Apple&#39;s first VR headset'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-1a823600Tjs/YCke3k0TZeI/AAAAAAAAAWE/2_1bOHtO2w0X9aeQMjHZK6ADA67u3bANQCLcBGAsYHQ/s72-w625-h438-c/apple-new-vr-headset.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-622456675330277275</id><published>2021-01-22T03:30:00.026-08:00</published><updated>2021-06-12T03:02:53.081-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="AR"/><category scheme="http://www.blogger.com/atom/ns#" term="Blockchain"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Gadgets"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="IoT"/><category scheme="http://www.blogger.com/atom/ns#" term="IT Security"/><category scheme="http://www.blogger.com/atom/ns#" term="ML"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="SEO"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><category scheme="http://www.blogger.com/atom/ns#" term="VR"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Hosting"/><title type='text'>Agnasarp.com | Tech vlog | Watch our super exciting videos on the Agnasarp YouTube channel!</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/z51bWBHVHcY&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Hello everyone! Welcome to our brand new YouTube channel Agnasarp! Let me introduce what Agnasarp is. It is a video blog that gives you an insight into cutting-edge technologies, thus we can simply say it is a 100% technology YouTube channel. If you are super curious about new technologies especially the Internet, Computing, Programming, Mobile, Gadgets, Artificial Intelligence, Machine Learning, Augmented Reality, Virtual Reality, Blockchain, and more, this is the right place for you. Stay with us to watch our super exciting videos.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/622456675330277275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/01/watch-our-super-exciting-videos-on-the-Agnasarp-YouTube-channel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/622456675330277275'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/622456675330277275'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/01/watch-our-super-exciting-videos-on-the-Agnasarp-YouTube-channel.html' title='Agnasarp.com | Tech vlog | Watch our super exciting videos on the Agnasarp YouTube channel!'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/z51bWBHVHcY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-7978735021427040858</id><published>2021-01-17T04:51:00.007-08:00</published><updated>2021-06-12T03:01:25.804-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="IT Security"/><title type='text'>Introduction to Social Engineering and Strategy to Handle Social Engineering Attacks</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-Smh78-7Enwo/YCkdQNn35gI/AAAAAAAAAV0/E9aoEiyzSWQsZrC9Q4TZCrbe2F1LS180ACLcBGAsYHQ/social-engineering.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1000&quot; height=&quot;444&quot; src=&quot;https://lh3.googleusercontent.com/-Smh78-7Enwo/YCkdQNn35gI/AAAAAAAAAV0/E9aoEiyzSWQsZrC9Q4TZCrbe2F1LS180ACLcBGAsYHQ/w634-h444/social-engineering.webp&quot; width=&quot;634&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Sometimes you may have heard Social Engineering but sometimes you may not, however, it will not be an excuse for you to become a victim of social engineering attack. That is the main reason to empower you with knowledge of social engineering and the strategy of handling social engineering attacks. The objectives of this post are to share about types of social engineering, understanding identity theft with potential effects, techniques used by social engineers which are phishing attacks and malicious email attachments, etc. You will mitigate personnel vulnerabilities with an awareness of the security and protect against identity theft and double-dealing with social engineering that compromise the security of the organization.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;What is Social Engineering?&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;This is the new face of security compromise therefore it will be the greatest threat to confidentiality today. Here, social engineers manipulate people to expose their private information, and sometimes they will make unauthorized changes to that information. Social engineers will take the advantage of human behavior to pull off a scam. It is a type of deception in which they present themselves as people that you can trust. They do not hesitate if they want to enter a building and they will just ask confidently from you to help them get inside. You will mislead as everything will happen without any compromise with the firewall but it will break all the security if you are tricked into clicking on a malicious link you think came from a Facebook or LinkedIn connection.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Social Engineering&#39;s Playbook&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Criminals will often take weeks and months to get to know a place before even coming in the door or making a phone call. Their preparation might include finding an organization&#39;s phone list or its chart and researching employees on social networking sites like Facebook and LinkedIn.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;On the Phone&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;A social engineer might call and pretended to be a fellow or a trusted outside authority such as law enforcement or an auditor. The criminals try to make the person feel comfortable with familiarity. They might learn the corporate lingo so the person on the end thinks they are an insider.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;In the Office&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;This is a generic tactic used by social engineers when they want to enter a building. How many times do you have heard this kind of request on the organization premises?&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;blockquote style=&quot;text-align: justify;&quot;&gt;Can you hold the door for a second for me? I just forgot to bring my access card today.&lt;/blockquote&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Online&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Today, there are plenty of social networks like LinkedIn, Facebook, Instagram, and Twitter, therefore, if you want to do company research before you going to face an interview, that will be really easy and you will definitely find loads of valuable information from them. Social engineers use the same strategy to collect information before launching an attack. They can find current employees of an organization from LinkedIn and they will collect everything about them. It is clearly proved by the below quote of a social engineer.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;It&#39;s now a matter of minutes that I can put together a good social engineering exercise, versus days and weeks in the past. Ad if I send out a hundred spear phishing emails, based on gathered information, it&#39;s almost a guarantee that I&#39;m going to get a good hit rate. (Social Engineer)&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;For online scams, social engineers take advantage of fear, curiosity, and greed, such as sending phishing emails asking if a target has ever seen their video, or a tech support scam claiming that the target&#39;s computer has been compromised. Attackers customize phishing attacks to target known areas of interest that can be leveraged to convince users to click on attachments linked by malware such as artists, actors, music, politics, and more. It creates a fake Facebook app designed to collect information. It can be designed to attract users and collect contacts and other information based on items that have already expressed interest. Exactly who you are connected to, whether you are connected to someone who will be another juicy target.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Types of Social Engineering Attacks&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;There are endless ways an identity thief could use social engineering to steal your personal information. Below is the scratch at the surface, but it covers the majority of common tactics used. The first line of defense is being aware of these tactics.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Pretexting&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Pretexting is used in almost every other type of social engineering attack. It is the art of lying t obtain privileged data, typically by researching a person to impersonate them. this may include knowing personal details such as their Identity card number, date of birth, or their wife&#39;s name. It may also be as simple as impersonating an insurance salesman. Pretexting is an excellent way to establish legitimacy early in an attack.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Phishing&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;The origin of the word phishing comes from &quot;phone fishing&quot;. It is a technique of fraudulently obtaining private information. Typically, the phisher sends an email that appears to come from a legitimate business such as a bank, or a credit card company. Phishers request verification of information and warning of some dire consequences if it is not provided. The email usually contains a link to a fake web page that seems legitimate and has a form requesting everything from a home address to an ATM card&#39;s PIN or a credit card number.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;There is another way of phishing called &quot;spear-phishing&quot; and although it is similar to phishing, it is a technique that fraudulently obtains personal information by sending 100% customized emails to targeted users. For these emails, the attacker needs to perform additional research to trick the end-user o the requested activities. spear-phishing has a higher success rate when compared to phishing.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Vishing&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Vishing, which is also known as voice fishing is the process of collecting personally identifiable information fraudulently from the general public with the help of telephone systems for the purpose of using a financial reward. Normally, the end-user might receive a telephone call with a voice message from a financial institute or a customer and ask the recipient to call a number and enter their account information or PIN for official use or security. But the number rings right away to the attacker via a voice-over-IP service.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Tailgating&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;In tailgating, basically, the attacker wants to enter to premises and it might be restricted electronic access control system normally, by RFID card. Then he/she simply asks an employee or customer who has legitimate access to the premises to hold the door for a second to enter or will enter the building just after the employee when the employee opens the door only for himself/herself. Mistakenly the legitimate employee may fail to ask the attacker to present the access token or sometimes the attacker pretends as he/she was forgotten to bring it with. Sometimes they may present a fake access token when someone asks in that kind of situation.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Baiting&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;In baiting, the attacker uses physical media to make curiosity of the victim. Normally, attackers leave malware-infected USB flash drives or other portable devices in locations people will find them and connect to work networks. This attack can also come in the form of giving you little pieces of information to trigger a response. In a situation of the attacker is asking to transfer a call from an employee to the supervisor of him/her, it shows the attacker baiting the employee where the employee should&#39;ve asked for more authentication before transferring the phone call to the supervisor.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;clear: both; text-align: justify;&quot;&gt;Quid Pro Quo&lt;/h4&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;This is a variant of baiting. Instead of baiting a target with a device, a quid pro quo attack promises a service or a benefit based on the execution of a specific action. A hacker impersonating an IT staff for a large organization is the most generic quid pro quo attack. The attacker may call the employee of the target organization and offer some kind of system upgrade or software installation. They might request victims to facilitate the operation by disabling the antivirus software temporarily to install the malicious apps.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Detecting Phony Emails&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Detecting phony emails is simpler than you may think-common sense is your best defense. If something seems suspicious or does not feel right, it may be an attack. Most of the time, below common clues will include social engineering attacks.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Creating a sense of urgency&lt;/li&gt;&lt;li&gt;Asking for your password&lt;/li&gt;&lt;li&gt;Asking for information they should not have access to&lt;/li&gt;&lt;li&gt;Something too good to be true like winning the lottery.&lt;/li&gt;&lt;li&gt;Pressuring you to bypass or ignore security procedures.&lt;/li&gt;&lt;li&gt;An odd email containing wording that does not sound like your colleague.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can do the below things to overcome the risk of those emails.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Do not click on links in messages.&lt;/li&gt;&lt;li&gt;Verify with known parties.&lt;/li&gt;&lt;li&gt;Check the email address. Does it match the text of the email?&lt;/li&gt;&lt;li&gt;Use known links and contacts outside those provided in the email.&lt;/li&gt;&lt;li&gt;Do not download files from unsolicited sources.&lt;/li&gt;&lt;li&gt;Watch for poor grammar, misspellings, urgent messages, and please for money.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;clear: both; text-align: justify;&quot;&gt;Handling Social Engineering Attacks&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;We can see new threats on a regular basis and there are many additional types of social engineering attacks. It is really impossible to stay away from being a target of such attacks, therefore following advice will help to ensure that you will not become a victim though you would have to be the target of someone.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Be cautious when opening attachments.: It is better to research if in doubt or to contact the security team.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Find the URL from links on your own.: If you have a doubt about the legitimacy of the URL, then better go for a manual search with a known search engine.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Ignore unsolicited requests.: Nobody should have to know your passwords or financial info in an email or phone call.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Secure your devices.: Lock your workstation and install the right software and keep applications up-to-date.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Multifactor Authentication: During the phone calls, ask the person on the other end multiple questions to verify identity.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Follow company policy.: Every company should have a standard set of policies and procedures that you must follow.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Ensure antivirus software is updated.: This kind of software is able to give you adequate security warnings and able to prevent further damage.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is better to call the security team of the organization if you have even a small doubt before getting the problem worst because it is the easiest action we can take in a few minutes.&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;Sources&lt;/b&gt;:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://www.coursehero.com/file/p7a4ck1/We-have-all-of-the-different-social-network-platforms-we-can-check-now-to/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/7978735021427040858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/01/introduction-to-social-engineering-and-strategy-to-handle-social-engineering-attacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/7978735021427040858'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/7978735021427040858'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/01/introduction-to-social-engineering-and-strategy-to-handle-social-engineering-attacks.html' title='Introduction to Social Engineering and Strategy to Handle Social Engineering Attacks'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-Smh78-7Enwo/YCkdQNn35gI/AAAAAAAAAV0/E9aoEiyzSWQsZrC9Q4TZCrbe2F1LS180ACLcBGAsYHQ/s72-w634-h444-c/social-engineering.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-2421286698590241082</id><published>2021-01-14T04:20:00.003-08:00</published><updated>2021-02-14T05:04:24.304-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><title type='text'>New Trend of Artificial Intelligence (AI) with Light and In-Memory Computing for a Minimum Latency from IBM</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-JoZ3nf9QRpA/YCka2KpY0RI/AAAAAAAAAVk/Cq0nO_wcYqkc9Myblt1iOwQIqsUN1B0xACLcBGAsYHQ/light-for-low-latency-ai.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;710&quot; data-original-width=&quot;960&quot; height=&quot;460&quot; src=&quot;https://lh3.googleusercontent.com/-JoZ3nf9QRpA/YCka2KpY0RI/AAAAAAAAAVk/Cq0nO_wcYqkc9Myblt1iOwQIqsUN1B0xACLcBGAsYHQ/w622-h460/light-for-low-latency-ai.webp&quot; width=&quot;622&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;a href=&quot;https://pixabay.com/illustrations/laser-light-light-show-737441/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;pixabay.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The data transmitting from/to anywhere has a significant delay and the processing may slow down with the present electrical current. This may lead to our favorite streaming applications would show events with a lag and other critical applications like self-driving vehicles and health applications with a deadly delay. With photonic integrated circuits, the IBM research team found a solution for this latency problem.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;IBM Research team has developed a way to reduce latency by using photonic integrated circuits that use light instead of electricity for computing. They also present their photonic processing combination as a non-von Neumann, in-memory computing model. That model performs computations with unprecedented, ultra-low latency and computes density.&amp;nbsp;Their model performs computations at even higher speeds, performing key computational primitives associated with AI models, such as deep neural networks for computer vision in a great efficient manner than ever before.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;What is Photonic Integrated Circuit (PIC)?&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The photonic integrated circuit (also known as a PIC) is a complex integrated circuit that incorporates a large number of optical devices to form a single photonic circuit. The main difference between a PIC and an electronic IC is that the PIC is analogous to an electronic integrated circuit. Many optical devices such as optical amplifiers, multiplexers, demultiplexers, optical lasers, attenuators, and also detectors are integrated into a photonic integrated circuit. For a large-scale operation of such a device, thousands of optical devices will be integrated into the device.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;What is Light and In-Memory Computing (IMC)?&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;The combination of photonic and IMC can solve the problem of lag so that computation in photonic memory plays an important role in critical and important artificial intelligence programs. With computer memory, the photonic process overcomes seemingly obstacles that are&amp;nbsp;too great to be overcome to the bandwidth of artificial intelligence computing systems based on electronic processors.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;There is a physical limitation for the electronic processors, as the number of GPUs you can store in a computer or in a self-driving car is not endless. This problem has led developers to turn to photonic for time-critical apps. It incorporates a photonic processor that has a much higher data modulation speed than that of electronics and can run multiple operations at the same time in the same physical core using &quot;wavelength division multiplexing&quot; (WDM). (This is a technology that multiplies numbers of optical carrier signals on a single optical fiber using different wavelengths of laser lights.) In this way, it provides an additional measure by using the frequency area. In essence, they are able to read using different wavelengths or colors, at the same time.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Findings of the Research&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;They used a measure called TOPS to assess the number of Operations Per Second, in Trillions, that a chip is able to process. In proof of concept, they obtained experimental data with matrices up to 9 × 4 with a maximum input vector of four at a time, they used non-volatile photonic memory devices based on phase-change memory to store the convolution cores on a chip and used photonic chip-based frequency combs to feed the multi-frequency encoded input. Even with the small 9 × 4 matrices, by employing four multiplexed input vectors and a modulation rate of 14GHz, they obtained an enormous processing speed of two trillion MAC operations (multiply-accumulate) per second or 2 TOPS. The result is impressive since the matrix is so small - although they are not doing many operations, they are doing them so fast that the TOPS figure is still very large.&lt;/p&gt;&lt;p&gt;Finally, Abu Sebastian, Distinguished Research Staff Member, IBM Research who involved in this research said,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Our work shows the enormous potential for photonic processing to accelerate certain types of computations such as convolutions. The challenge going forward is to string together these computational primitives and still achieve substantial end-to-end system-level performance. This is what we’re focused on now.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;Sources&lt;/b&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://www.ibm.com/blogs/research/2021/01/latency-ai-photonics/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/2421286698590241082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/01/new-trend-of-artificial-intelligence-with-light-and-in-memory-computing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/2421286698590241082'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/2421286698590241082'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/01/new-trend-of-artificial-intelligence-with-light-and-in-memory-computing.html' title='New Trend of Artificial Intelligence (AI) with Light and In-Memory Computing for a Minimum Latency from IBM'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-JoZ3nf9QRpA/YCka2KpY0RI/AAAAAAAAAVk/Cq0nO_wcYqkc9Myblt1iOwQIqsUN1B0xACLcBGAsYHQ/s72-w622-h460-c/light-for-low-latency-ai.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-3570779250428703099</id><published>2021-01-08T06:30:00.007-08:00</published><updated>2021-06-20T02:44:43.851-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="IT Security"/><title type='text'>Introduction to Information Security</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-8AiGqVE4eBA/YCkZrxTrWYI/AAAAAAAAAVQ/fZ3IJPrwzMYEYrz1kpxXe9QaAjoFSaIygCLcBGAsYHQ/information-security.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;402&quot; data-original-width=&quot;635&quot; height=&quot;386&quot; src=&quot;https://lh3.googleusercontent.com/-8AiGqVE4eBA/YCkZrxTrWYI/AAAAAAAAAVQ/fZ3IJPrwzMYEYrz1kpxXe9QaAjoFSaIygCLcBGAsYHQ/w610-h386/information-security.webp&quot; width=&quot;610&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;a href=&quot;https://pixabay.com/illustrations/security-secure-locked-technology-2168233/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;pixabay.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In this post, we are going to illustrate the definition of information and information security, the importance of information security and the role which organizational employees have to play, different types of cyber crimes that breach the safety of information, and finally, the ways that we can follow to ensure the information security.&lt;/p&gt;&lt;p&gt;This post will help you to understand the nature of the potential information security threats facing organizations today, recognize why we need to protect the confidential information entrusted to us, understand our responsibilities in supporting our information protection policies, properly handle possible or actual information security incident or data loss, be aware of the existence of the Confidentiality, Integrity, and Availability (CIA) model as the three most crucial components of security, and gain understanding on what are the specific actions to safeguard our information security.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;What is Information?&lt;/h3&gt;&lt;p&gt;Information is an asset which, like other important business assets, has value to an organization and consequently needs to be suitably protected. Whatever form the information takes, or means by which it is shared or stored, it should always be appropriately protected. All information is valuable but the increasing reliance on sophisticated processes and technology makes it ever more critical to us and an ever more tempting target for those wanting to exploit it. Information can be created; destroyed; processed; lost; stored; transmitted; corrupted; stolen.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;What is Information Security?&lt;/h3&gt;&lt;p&gt;Information security is sometimes abbreviated as infosec and is a set of practices designed to secure data from unauthorized access or modification as it is stored or transferred from a physical device or location to another location. Sometimes you call this data security. In other words, we can say all the processes and practices we can implement to protect our network, computers, applications, and data from attackers on the C-I-A triad. Efforts to maintain information security while knowledge has become one of the most important assets of the 21st century are becoming increasingly important. As the number of billion dollars of loss associated with Cyber Crime, we should essentially be careful about information security. Unfortunately, information security can be compromised due to the lack of knowledge and understanding of how to work in a comprehensive manner.&lt;/p&gt;&lt;p&gt;In an organization, we have to take information security very seriously. We can implement several controls in place to protect our assets, and securely handle the data of the organization. But the individual employee is the most important line of defense in all these controls.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Administrative Control&lt;/h4&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Policies&lt;/li&gt;&lt;li&gt;Procedures&lt;/li&gt;&lt;li&gt;Guidelines&lt;/li&gt;&lt;li&gt;Employee screenings&lt;/li&gt;&lt;li&gt;Change control&lt;/li&gt;&lt;li&gt;Security awareness trainings&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Technical Control&lt;/h4&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Access control&lt;/li&gt;&lt;li&gt;Encryption&lt;/li&gt;&lt;li&gt;Firewalls&lt;/li&gt;&lt;li&gt;IDS&lt;/li&gt;&lt;li&gt;IPS&lt;/li&gt;&lt;li&gt;HTTPS&lt;/li&gt;&lt;li&gt;Physical control&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Physical Control&lt;/h4&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Restrict physical access to resources and premises&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Most importantly business survival depends on information security therefore each and every employees have a responsibility to help the organization to&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Protect information from a range of threats&lt;/li&gt;&lt;li&gt;Ensure business continuity&lt;/li&gt;&lt;li&gt;Minimize potential financial loss&lt;/li&gt;&lt;li&gt;Optimize return on investment&lt;/li&gt;&lt;li&gt;Increase business opportunities.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Know Your Enemy &amp;amp; Protect Yourself&lt;/h3&gt;&lt;p&gt;There are several parties who can commit a cybercrime. Those are,&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Terrorists: The resulting cyber attack can affect voting processes, electrical grids, and the shutdown of important government facilities.&lt;/li&gt;&lt;li&gt;Insiders: Estimated billions in losses and internal frauds.&lt;/li&gt;&lt;li&gt;Common thieves: Why did you rob the bank? That is where the money is.&lt;/li&gt;&lt;li&gt;Hacktivists: Anonymous people who force political opinion and agenda.&lt;/li&gt;&lt;li&gt;Foreign nations: Stuxnet, Sony attacks, WannaCry&lt;/li&gt;&lt;li&gt;Organized crime: Traditional mafia is outsourcing cybercrime to freelance criminals.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Basically, controls can be applied in an effort to protect the Confidentiality, Integrity, and Availability of information as the information security is based on the C-I-A model.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-c0tLaTN9M4g/X_izT8gw1AI/AAAAAAAAAMU/Tw5dtt7FZi0U4WRNCfEJxWdVbFq1lkomwCLcBGAsYHQ/C-I-A.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;500&quot; data-original-width=&quot;800&quot; height=&quot;397&quot; src=&quot;https://lh3.googleusercontent.com/-c0tLaTN9M4g/X_izT8gw1AI/AAAAAAAAAMU/Tw5dtt7FZi0U4WRNCfEJxWdVbFq1lkomwCLcBGAsYHQ/w635-h397/C-I-A.png&quot; width=&quot;635&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;The C-I-A Model&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Confidentiality&lt;/h4&gt;&lt;p&gt;Those are measures taken to prevent sensitive information from unwanted people while ensuring the right people have access to it. Employees in the organization must be aware of the risk factors, threats, and how to guard against them.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Integrity&lt;/h4&gt;&lt;p&gt;This assures that sensitive data is trustworthy, accurate, and consistent. Security measures are taken to ensure that sensitive data is not being able to modify by unauthorized users.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Availability&lt;/h4&gt;&lt;p&gt;If an organization went offline for a short amount of time, there may be a significant loss. Therefore, keeping the business operations is critical and we need to ensure that those who need access can maintain this access at any time.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How Can We Protect Our Facility?&lt;/h4&gt;&lt;p&gt;Most of the time, a successful attack may originate with the attacker on the premise. Attackers can use a physical attack as sounding a fire alarm and causing the building to be evacuated. Physical access to the organization&#39;s buildings can lead to theft and allow them to launch a network attack. Regulations and laws need to be applied even in the event of an emergency and sensitive data must be protected. We can get the following actions to keep our facilities still protected.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Employees as live beings in the organization should be on alert for who enters and exits buildings.&lt;/li&gt;&lt;li&gt;If the organization provided access cards to the employees, you can consider employees not wearing access cards and accompany them to the security office.&lt;/li&gt;&lt;li&gt;Employees can watch out for suspicious characters hovering around the workplace and the building premises.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How Can We Protect Our Network?&lt;/h4&gt;&lt;p&gt;Network attacks are the most common technical threat. This can be a denial of services taking servers of the organization offline. And it can be lead to compromise of customer data resulting in loss of revenue and lawsuits. We can take the below actions to protect our network.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Use secure protocols when transmitting data. ex: HTTPS rather than HTTP&lt;/li&gt;&lt;li&gt;Protect physical access to systems by locking computers.&lt;/li&gt;&lt;li&gt;Do not connect unknown systems to the network&lt;/li&gt;&lt;li&gt;Scan all files before you download and download from only trusted sites.&lt;/li&gt;&lt;li&gt;Encrypt your emails and sensitive files.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How Can We Protect Our Identity?&lt;/h4&gt;&lt;p&gt;Personal Identifiable Information which also known as PII is any information that can lead to locating and contacting an individual and identifying that individual uniquely. PII may be full name, mother&#39;s maiden name, identification number, address, phone number, driver&#39;s license/road tax, biometrics, or other uniquely identifying characteristics. Information sharing leads to compromise as we share more and more about ourselves through various platforms. Our responsibility at work to protect the PII of customers as we protect our own PIIs as well.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Identity theft starts off with the attacker acquiring little information that ultimately leads to a wider array of information. It is the crime of obtaining the personal or financial information of another person for the sole purpose of assuming that person&#39;s name or identity to make transactions or purchases. Identity thieves may steal employees&#39; and/or customers&#39; data or even the organization&#39;s identity, putting its reputation at a risk. This may lead to&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Financial ramifications: Thousands of dollars in debt accrued in your name or scarred credit history or additional cost to resolve financial errors (legal fees etc.)&lt;/li&gt;&lt;li&gt;Life-threatening complications: Medical mistakes due to misinformation linked to your name or trouble getting prescriptions if someone else has already claimed it under your name.&lt;/li&gt;&lt;li&gt;Potential criminal charges: An identity thief may break the law while using your identity, leaving you to deal with the ramifications.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;We can do the following to protect our identity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How to secure your personal info&lt;/h4&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Be careful of your wallet as it contains all your sensitive information such as your identity card and driver&#39;s license.&lt;/li&gt;&lt;li&gt;Review your receipts and compare it with account statemes.&lt;/li&gt;&lt;li&gt;Shred receipts, credit offers, account statements and expired cards to prevent dumpster divers from getting your personal information.&lt;/li&gt;&lt;li&gt;Store personal information in a safe place at home and at work.&lt;/li&gt;&lt;li&gt;Watch out for shoulder surfers specially with coded-access to buildings when using ATMs.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How to secure your work place&lt;/h4&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Sensitive information must be kept secured.&lt;/li&gt;&lt;li&gt;Ensure the firewalls and virus-detection software are constantly updated on your home or your work computer.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How Can We Protect Against Malicious Websites?&lt;/h4&gt;&lt;p&gt;Attackers make millions of dollars by tricking end-users. Rogue websites are used to collect information, intercept information, and distribute malicious software such as keyloggers that track all your keystrokes. In browser hijacking, if a site will not allow you to access any other sites and has homepage or search engine been modified without your permission, be suspicious. You need to be careful about websites &quot;Buy Now&quot; offers and pop-ups,indicates trouble and often &quot;free downloads&quot; install spyware or other applications on your system. Some websites will say that they have &quot;Scanned your computer and havedetected viruses&quot; should always be treated with suspicious. Poorly built websites where it is difficult to find the information you are looking for may be malicious. And&amp;nbsp; if every link seems to lead to an advertisement, find more legitimate website to conduct your business.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Avoid using suspicious websites.&lt;/li&gt;&lt;li&gt;Use secure protocols like HTTPS.&lt;/li&gt;&lt;li&gt;Do not ignore any security warnings that can save you from virus attacks.&lt;/li&gt;&lt;li&gt;Do not download files from peer to peer sites. ex: BitTorrent.&lt;/li&gt;&lt;li&gt;Do not change your browser&#39;s default security settings.&lt;/li&gt;&lt;li&gt;Contact your security team if you have to face a difficult situation.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;How Can We Protect Our Mobile Devices?&lt;/h4&gt;&lt;p&gt;Portability makes mobile devices vulnerable and the Bluetooth is inherently insecure. Applications ofter share information with other applications across different platforms. Apart from that, contacts and other sensitive information are often easily compromised. We can take the necessary actions below to protect our mobile devices.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Use strong passwords or passcodes.&lt;/li&gt;&lt;li&gt;Disable Bluetooth when not in use.&lt;/li&gt;&lt;li&gt;Backup and protect data.&lt;/li&gt;&lt;li&gt;Enable remote wipe function and consider the &quot;Find your device option&quot;.&lt;/li&gt;&lt;li&gt;Be cautious about what you share.&lt;/li&gt;&lt;li&gt;Download only secure applications.&lt;/li&gt;&lt;li&gt;Do not enable information sharing between apps unless necessary.&lt;/li&gt;&lt;li&gt;Don&#39;t connect to a working system or work network with personal mobile devices unless you have express access.&lt;/li&gt;&lt;li&gt;Report anything which is not trustworthy, to the security team.&lt;/li&gt;&lt;li&gt;Do not root or jailbreak your devices to leave devices open to vulnerabilities.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Good Information Security Practices&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;It is better to shut down your personal computer when you are not in use and it is the best way to keep your security threats away from your valuable data/information. You can lock or log off the PC as well if you leave it for a short while.&lt;/li&gt;&lt;li&gt;You can keep your systems/os patched and up-to-date.&lt;/li&gt;&lt;li&gt;You can use strong credentials and protect them by not exposing them to any other.&lt;/li&gt;&lt;li&gt;You can encrypt sensitive files to make sure the confidentiality of data.&lt;/li&gt;&lt;li&gt;You can double-check the information that you are going to share or expose to others.&lt;/li&gt;&lt;li&gt;You should never let anyone access your system with your own credentials.&lt;/li&gt;&lt;li&gt;You should be on alert of persons looking for information and physical access to buildings.&lt;/li&gt;&lt;li&gt;You should disable unsecured mechanisms.&lt;/li&gt;&lt;li&gt;You should report any security breach or potential security concerns to your security teams.&lt;/li&gt;&lt;li&gt;You should trust and use your own knowledge/intelligence if you are uncomfortable with anything.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/3570779250428703099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2021/01/introduction-to-information-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3570779250428703099'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/3570779250428703099'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2021/01/introduction-to-information-security.html' title='Introduction to Information Security'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-8AiGqVE4eBA/YCkZrxTrWYI/AAAAAAAAAVQ/fZ3IJPrwzMYEYrz1kpxXe9QaAjoFSaIygCLcBGAsYHQ/s72-w610-h386-c/information-security.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7311542407095082399.post-6541426838146693179</id><published>2020-12-28T14:31:00.005-08:00</published><updated>2021-05-23T00:35:11.531-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="AR"/><category scheme="http://www.blogger.com/atom/ns#" term="Blockchain"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Gadgets"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="IoT"/><category scheme="http://www.blogger.com/atom/ns#" term="ML"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><category scheme="http://www.blogger.com/atom/ns#" term="VR"/><title type='text'>Technology trends in 2021</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-zFPEaRG8NNQ/YCkXpK1oDOI/AAAAAAAAAU8/uXvWdycedJk0SermJM-quHbZAVLF-S_lACLcBGAsYHQ/trending-the-trends-deloitte.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;361&quot; data-original-width=&quot;640&quot; height=&quot;352&quot; src=&quot;https://lh3.googleusercontent.com/-zFPEaRG8NNQ/YCkXpK1oDOI/AAAAAAAAAU8/uXvWdycedJk0SermJM-quHbZAVLF-S_lACLcBGAsYHQ/w624-h352/trending-the-trends-deloitte.webp&quot; width=&quot;624&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This image is recreated by agnasarp.com and used only for information purposes. This does not have any bind with any real-world products or services. Image source:&amp;nbsp;&lt;a href=&quot;https://www2.deloitte.com/content/dam/insights/articles/6730_TT-Landing-page/DI_2021-Tech-Trends.pdf&quot; rel=&quot;nofollow&quot;&gt;deloitte.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;The coming year 2021 will not be a usual year with the prevailing Covid-19 situation and badly this pandemic already has been created a situation of staying in the home for all of us. Industries all over the world could be survived up to a certain and considerable level with technologies that can be practically used to support the workforce even in a situation like working remotely. Employees have also been able to save their employments with the opportunities that today&#39;s technologies created.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;According to Deloitte’s 12th annual Tech Trends report, we will quickly look at the insights and inspiration for the digital journey ahead. The report presented 9 tech trends under 6 main areas as below in the table for the year 2021.&lt;/p&gt;&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Area&lt;/th&gt;&lt;th&gt;Trend&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Core Modernization&lt;/td&gt;&lt;td&gt;Core revival&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trust&lt;/td&gt;&lt;td&gt;Zero trust&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan=&quot;3&quot;&gt;Business of Technology&lt;/td&gt;&lt;td&gt;Strategy, engineered&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DEI tech: Tools for equity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Supply unchained&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cloud &amp;amp; Distributed Platforms&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan=&quot;2&quot;&gt;Data and Analytics &amp;amp; Artificial Intelligence&lt;/td&gt;&lt;td&gt;Machine data revolution&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MLOps: Industrialized AI&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan=&quot;2&quot;&gt;Digital Experience &amp;amp; Digital Reality&lt;/td&gt;&lt;td&gt;Rebooting the digital workplace&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bespoke for billions&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 1:&amp;nbsp;Strategy, engineered&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Today&#39;s technology has brought new competitive advantages to some organizations, and it has brought continued survival threats to other organizations. As a result, the distinction between company strategy and technology strategy has become blurred-both need to inform each other. Savvy corporate strategists are going beyond the current technological capabilities and competitive landscape of their organizations, considering the broader future possibilities of how technology can expand their business scope and ways to win. However, the complex uncertainty and range of possibilities may make the human brain unable to deal with it on its own. This is why strategists turn to strategic technology platforms with advanced analysis, automation, and artificial intelligence capabilities. Organizations are using these tools to continuously identify internal and external strategic forces, provide information for strategic decisions and monitor results. As a result, the company is transforming strategy development from an infrequent and time-consuming process to a continuous and dynamic process, thereby helping strategists to think more broadly and creatively about the broad possibilities of the future.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 2:&amp;nbsp;Core revival&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Modernizing old enterprise systems and migrating them to the cloud can help unlock the organization’s digital potential. Until recently, these efforts could also undermine the digital transformation budget of the same organization. For many, the cost of the required cloud migration and other core modernization strategies may be prohibitive. This will change. In Deloitte’s recognized growth trend, some pioneering companies have begun to use clever outsourcing arrangements to redesign traditional business cases to achieve core modernization. Similarly, some companies are exploring opportunities to transfer core assets to increasingly powerful platforms (including low-code options). Finally, many companies promote their platform-first strategy by solving technical problems in the ERP system and migrating non-essential functions to other platforms. In the business climate defined by historical uncertainty, these innovative methods to obtain more value from traditional core assets may soon become a standard part of every CIO&#39;s digital transformation manual.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 3:&amp;nbsp;Supply unchained&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;For a long time, the supply chain has been regarded as the cost of doing business. It is moving from the back office to the value-added front line of customer segmentation and product differentiation. Future-oriented manufacturers, retailers, distributors, etc. are exploring ways to transform the supply chain cost center into a customer-centric value driver. They are getting more value from the data collected, analyzed, and shared across the supply network. Finally, some of these organizations are exploring opportunities to use robots, drones, and advanced image recognition to make employees’ physical supply chain interactions more efficient, effective, and safe. Of course, transforming an established supply chain into a flexible, customer-centric supply network will be a challenge, and for most organizations, this will be an ongoing journey-vital. The kind of destruction we saw in the COVID-19 pandemic is likely to become the norm. When the next global event arrives, technology and supply chain leaders will not be able to claim that they have not seen the upcoming events.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 4:&amp;nbsp;MLOps: Industrialized AI&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Advanced machine learning models can help companies effectively discover patterns, reveal anomalies, make predictions and decisions, and generate insights, and are increasingly becoming a key driver of organizational performance. Companies realize that they need to transform from personal heroes to engineering performance in order to effectively transfer machine learning models from development to production and management. However, due to awkward, fragile development and deployment processes that hinder trials and hinder collaboration between product teams, operations staff, and data scientists, many people&#39;s efforts have been hindered. As AI and ML mature, a lot of engineering and operational discipline can help organizations overcome these obstacles and effectively extend AI to achieve business transformation. In order to realize the broader transformative benefits of AI and ML, the manual AI era must give way to one of the industrialized insights of automation. Enter MLOps, also known as ML CI/CD, ModelOps, and ML DevOps: Application of DevOps tools and methods in model development and delivery to achieve industrialization and large-scale machine learning from development and deployment to ongoing model maintenance and management.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 5:&amp;nbsp;Machine data revolution: Feeding the machine&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;As machine learning prepares to overhaul business operations and decision-making, more and more AI pioneers realize that legacy data models and infrastructure (all designed to support human rather than machine decision-making) may become obstacles to the success of ML. In response, these organizations are taking steps to disrupt the data management value chain from start to finish. As part of a growing trend, they are deploying new technologies and methods, including advanced data capture and structuring capabilities, analysis to identify connections between random data, and next-generation cloud-based data to support complex modeling storage. Together, these tools and technologies can help organizations transform the ever-increasing amount of data into the future foundation of a new era. In the new era, machines can not only enhance human decision-making capabilities but also make real-time and large-scale capabilities that humans cannot make.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 6:&amp;nbsp;Zero trust: Never trust, always verify&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Complex cyber attacks and the rapidly changing corporate environment have disrupted traditional (some flawed) castle and moat cybersecurity methods. Zero trusts is rooted in the following concept: modern enterprise environments require different security methods: there is no longer a defined scope within which every user, workload, device, and network is inherently trusted. In a zero-trust architecture, each access request should be validated based on all available data points (including user identity, device, location, and other variables that provide context for each connection and allow more nuances based on risk). Data, applications, workloads, and other resources are treated as a single manageable unit containing vulnerabilities, and access is provided based on the principle of least privilege. The automation and engineering required to properly implement a zero-trust security architecture can help strengthen the security posture, simplify security management, improve the end-user experience, and enable the modern enterprise environment. However, the transition to zero-trust may require tremendous effort and planning, including solving basic network security issues, automating manual processes, and planning changes to security organizations, technological prospects, and the enterprise itself.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 7:&amp;nbsp;Rebooting the digital workplace&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;As the world&#39;s largest unplanned work from home continues, many business leaders are asking unresolved questions: After the dust settles, will remote work be the rule or the exception? Is permanent remote labor sustainable? How will productivity and employee well-being be affected? If there is no face-to-face peer contact, will innovation suffer? What role will the physical office play? By more intentionally embracing the positive aspects of the digital workplace, including data generated by employees’ tools and platforms, companies may be able to overcome the deficiencies and ambiguities of the digital workplace. This can help organizations optimize individual and team performance and customize the employee experience through personalized recommendations, making remote work far more than just a traditional office agent. As on-site workspaces and headquarters grow, organizations can use this data to create thriving, efficient, and cost-effective offices that are seamlessly intertwined with remote experiences.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 8:&amp;nbsp;Bespoke for billions: Digital meets physical&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;When we look back, 2020 will be a turning point for most people to adapt to digital interaction for daily life, whether it is working from home, studying online, or ordering groceries. However, the proliferation of digital interaction is a day when many of us desire to interact in person. As we look to the future, we hope that consumers will no longer be satisfied with the unique physical or digital brand experience: they want the best combination of the two without sacrificing the convenience of online transactions (a highly personalized personal experience) mix together. In the next 18 to 24 months, we hope that the personal experience and digital experience will become more seamless and intertwined. Online and offline interactions will no longer be separate experiences-the customer’s journey will consist of personal and digital elements, which are integrated and deliberately designed to create a seamless brand experience that adapts to the behaviors and attitudes of individual customers and preferences.&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Trend 9:&amp;nbsp;DEI tech: Tools for equity&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Many organizations are embracing diversity, equity, and inclusion as business imperatives, with a growing number adopting holistic, organization-wide workforce strategies that address biases and inequities to enhance enterprise and employee performance. While HR professionals often lead DEI strategies, technology leaders play a critical role as a strategic partner by designing, developing, and executing tech-enabled solutions to address increasingly complex DEI workforce challenges. Over the coming months, we expect enterprises to adopt new tools that incorporate advanced analytics, automation, and AI, including natural language processing and machine learning, to help inform, deliver, and measure the impact of DEI.&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;Sources&lt;/b&gt;:&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;https://www2.deloitte.com/content/dam/insights/articles/6730_TT-Landing-page/DI_2021-Tech-Trends.pdf&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.agnasarp.com/feeds/6541426838146693179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.agnasarp.com/2020/12/technology-trends-in-2021.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6541426838146693179'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7311542407095082399/posts/default/6541426838146693179'/><link rel='alternate' type='text/html' href='https://www.agnasarp.com/2020/12/technology-trends-in-2021.html' title='Technology trends in 2021'/><author><name>Agnasarp</name><uri>http://www.blogger.com/profile/05197272741841916942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//1.bp.blogspot.com/-fdx0DiryD4g/X8vSXHDXXJI/AAAAAAAAAF4/etLb7B5EK0I_Uq2FVqIlmsljJYjk-XvQQCK4BGAYYCw/s220/Agnasarp%2B-%2Blogo%2B-%2Bnew%2B-%2Bhigh%2Bquality.PNG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-zFPEaRG8NNQ/YCkXpK1oDOI/AAAAAAAAAU8/uXvWdycedJk0SermJM-quHbZAVLF-S_lACLcBGAsYHQ/s72-w624-h352-c/trending-the-trends-deloitte.webp" height="72" width="72"/><thr:total>1</thr:total></entry></feed>