<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jananie Perera</title>
    <description>The latest articles on DEV Community by Jananie Perera (@jananie98).</description>
    <link>https://dev.to/jananie98</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1196565%2F8493fa8c-14ba-4dce-a095-ae79366be674.jpeg</url>
      <title>DEV Community: Jananie Perera</title>
      <link>https://dev.to/jananie98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jananie98"/>
    <language>en</language>
    <item>
      <title>SPRING SECURITY</title>
      <dc:creator>Jananie Perera</dc:creator>
      <pubDate>Wed, 13 Mar 2024 19:39:42 +0000</pubDate>
      <link>https://dev.to/jananie98/spring-security-53ka</link>
      <guid>https://dev.to/jananie98/spring-security-53ka</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf9azyo1p5cpa6ipvnpo.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf9azyo1p5cpa6ipvnpo.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgikwe2qu89ek0aaeefof.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgikwe2qu89ek0aaeefof.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgs4fmljjeonk03vusz85.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgs4fmljjeonk03vusz85.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczv0k920fgu6htqdacd6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczv0k920fgu6htqdacd6.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1trlzjben9y9fp30nz38.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1trlzjben9y9fp30nz38.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06pq21f7fevbp5js8wte.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06pq21f7fevbp5js8wte.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jqhb4r5v9pbfivwm0yp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jqhb4r5v9pbfivwm0yp.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ghuaowjk6hhpi4kf4vm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ghuaowjk6hhpi4kf4vm.PNG" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>springsecurity</category>
      <category>jwt</category>
      <category>springboot</category>
      <category>security</category>
    </item>
    <item>
      <title>Microservices</title>
      <dc:creator>Jananie Perera</dc:creator>
      <pubDate>Thu, 02 Nov 2023 19:17:32 +0000</pubDate>
      <link>https://dev.to/jananie98/microservices-2khc</link>
      <guid>https://dev.to/jananie98/microservices-2khc</guid>
      <description>&lt;p&gt;In this article we will be discussing about the Microservices compared to the monolith architecture and the characteristics of Microservices and Microservice ecosystem.&lt;/p&gt;

&lt;p&gt;Microservices is about the development of a larger application as a suite of modular services. each module supports a specific business goal, or we call it a business functionality. to communicate between and among the independent and separated functionalities well-defined and simple interfaces are used. the following diagram will elaborate the overall view of a microservices architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm4jfha3mknnzn4w05qt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm4jfha3mknnzn4w05qt.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microservices are built depending on the business capabilities. this design model is called “Domain Driven Design”. as we are separately developing each microservice, we can use a suitable programming language and a data storage technique irrespective of other microservices. Each microservice is tested and deployed separately, hence faster release cycle is resulted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F256zox92boc30x20l99t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F256zox92boc30x20l99t.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microservices are;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Highly maintainable and testable&lt;/li&gt;
&lt;li&gt;Loosely coupled&lt;/li&gt;
&lt;li&gt;Independently deployable&lt;/li&gt;
&lt;li&gt;Organized around business capabilities&lt;/li&gt;
&lt;li&gt;Owned by a small team&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Monolith Architecture
&lt;/h2&gt;

&lt;p&gt;monolith architecture is a singular, large computing network with one code base that couples all of the business concerns together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43sa0up5uts9kg16phdp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43sa0up5uts9kg16phdp.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;change in one business capability will result in the re-deployment of whole bundle which consume a lot of time and money in testing. As the scalable unit is large only a single component scaling is not possible and the whole bunch of components should be scaled. Programming language used and data storage technique cannot be changed according to the user requirement due to high coupling with the underlayer frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microservices Architecture
&lt;/h2&gt;

&lt;p&gt;Business capabilities should be exactly same in both architectures. Thus, we are defining separate microservice for each, covering all the business capabilities. Business capabilities are system user requirements and that’s why they should not be changed in any of the architectures.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97zcv4rocc98o02otw7d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97zcv4rocc98o02otw7d.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When scaling,&lt;/p&gt;

&lt;p&gt;In monolith architecture, we have to replicate the whole bundle in the server while in the microservice architecture we can choose the scalable unit as per the requirement. Replication of a component can be done as needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Characteristics of Microservices
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Componentization via services&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Independently replaceable and upgradable units of the software are called components. We choose microservice component based on the service. Each component provides a separate independent service. Thus, it is called componentization via service. In here the major difference seen in the process of deployment. The deployment is done as a service rather than a .jar/.war file or a dill. In the world of microservices the component is not a library anymore, it is a service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Organized around business capabilities&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All the microservices are organized business capabilities or business functions. Each microservice will provide an independent business function of the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Samrt endpoints and dumb pipes&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pipes are only be delivering the message. The main responsibility of the pipe is reliable transmission of the message. No business logics are applied on the pipes. Business logics are only applicable at the end points, which means the microservice is the one that apply the business logic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjytly5khfi2xnb791clq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjytly5khfi2xnb791clq.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Decentralized governance&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choosing the right tool, best technology, suitable programming language and data storage mechanism for each solution is possible with microservice. But in each case best practices and principles should be followed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Decentralized Data Management&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each microservice maintains an independent and separate data store for them. Each data store is coupled loosely with one another. And also they only connect with other data stores using APIs. Which means data stores do not connect directly with other data stores.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lck34vmvp477e57972f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lck34vmvp477e57972f.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Infrastructure Automation&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we are having several micro-services we have a proper automation pipeline from compilation, deployment and scaling. Maintaing a number of microservices is different than in the monolith architecture. If we are looking forward to moving to the microservices architecture infrastructure automation is a must.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Advantages of infrastructure automation,&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ease of scaling up and down&lt;/li&gt;
&lt;li&gt;Faster Deployment cycles&lt;/li&gt;
&lt;li&gt;Resilient and highly available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Design for Failure&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Application needed to be designed in a way that they can tolerate the failure of services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microservices Ecosystem
&lt;/h2&gt;

&lt;p&gt;There are several components that consist of the microservices ecosystem. Those components are identified as follows,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load Balancer&lt;/li&gt;
&lt;li&gt;Service Discovery Server/ Service Registry&lt;/li&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;li&gt;Central Configuration Server&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Containerization&lt;/li&gt;
&lt;li&gt;Centralized log analysis&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s dive into a brief introduction to each component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Load Balancer&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Load balancer is responsible for distributing the incoming load/ traffic among many instances of microservices. Load balancers can be seen either as client-side load balancer or server-side load balancers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client-side load balancing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a client-side load balancer service registry has access to all related details about microservices. When a microservice wants to communicate with another microservice, the load balancer on the client side talks to the service registry and does the balancing of traffic on its own at the client side.&lt;/p&gt;

&lt;p&gt;This scenario can be explained using the following diagram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzx8hi92hppn730qdk3sd.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzx8hi92hppn730qdk3sd.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to the diagram Microservice B has three identical instances. When Microservice A wants to communicate with Micro-service B the load balancer at Microservice A (Client Side) talks to service registry to get details about microservice B and itself decides to which instance the traffic would be routed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server-side load balancing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this scenario also, three instances of microservice B and microservice A is present. Unlike in client-side load balancing here microservice A does not own its own client-side load balancer. Therefore, when microservice A wants to communicate with microservice B it has to send a request to the load balancer component. Then the load balancer component calls to the service registry and route the relevant details about microservice B. then only the load balancer decides to which instance the traffic be routed.&lt;/p&gt;

&lt;p&gt;The following diagram shows the server-side load balancing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6n6lylkxyih7vas386oe.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6n6lylkxyih7vas386oe.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Service Discovery Server/Service Registry&lt;br&gt;
_&lt;/strong&gt;&lt;br&gt;
Instead of manually keeping a track of the deployed microservices, their hosts and ports, Service discovery functionality or the service registry allows microservices to self-register themselves at startup through APIs.&lt;/p&gt;

&lt;p&gt;Though in monolith architecture it is possible to maintain a document about microservices, their ports and all that, In microservices architecture having a dynamically changing architecture maintaining documentation is not possible.&lt;/p&gt;

&lt;p&gt;With the service discovery functionality, microservices can update themselves about alterations of their nodes, and IS to the service registry.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns8mzjjozdgpm1m76che.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns8mzjjozdgpm1m76che.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;API Gateway&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In monolithic architecture a single endpoint is there to access all the other services. But in the microservices architecture several endpoints are present. To access those multiple end points while maintaining the uniformity in the architecture API gateways have been deployed. Those API gateways are required to handle and route the requests to the relevant endpoints. To maintain the high availability in the system several API gateways can be deployed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif7ci5rpeq4ece6vswrh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif7ci5rpeq4ece6vswrh.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Central Configuration Server&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The central configuration server can be used to apply the configurations to all the microservices at once instead of changing them one by one. At the startup of the microservice the central configuration server requests the configurations of the particular service and keeps a track record of that. If there are any alterations to the configurations, the central configuration server can be modified, so that the other microservices can easily access the updated configurations of a particular microservice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feinbqesswexq96lcc0yj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feinbqesswexq96lcc0yj.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Monitoring&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In monitoring a single server monitors how each microservice is performing. Unlike in the monolith architecture monitoring is quite complex in microservices architecture, thus a single monitoring server is required.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf62xx10awchvtfms8js.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf62xx10awchvtfms8js.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Containerization&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Application along with all the dependencies are packaged as a single container. So the container can run itself wherever it is. container runtime or the container orchestrater is enough. Container orchestration is automatically provision, deployment, scaling and management of containerized applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Centralized log analysis&lt;br&gt;
_&lt;/strong&gt;&lt;br&gt;
Centralized log analysis is used for troubleshooting purposes. A central component collects all the log details about each microservice for easy reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Circuit Breaker&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Circuit breaker involves in maintain the high availability of the whole application.&lt;/p&gt;

&lt;p&gt;_In this article we discussed about the microservices architecture, microservices architecture compared to monolith architecture characteristics of microservices and microservices ecosystem. Microservices architecture is not the absolute best solution for any software project. The architectural design should be chosen depending on the user requirements, performance, security, scalability deployment strategy and all that.&lt;/p&gt;

&lt;p&gt;Stay tuned for the next...&lt;br&gt;
Thank You_&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>architecture</category>
      <category>microserviceecosystem</category>
      <category>microservicearchitecture</category>
    </item>
    <item>
      <title>IDENTITY AND ACCESS MANAGEMENT</title>
      <dc:creator>Jananie Perera</dc:creator>
      <pubDate>Thu, 02 Nov 2023 17:57:25 +0000</pubDate>
      <link>https://dev.to/jananie98/identity-and-access-management-4a16</link>
      <guid>https://dev.to/jananie98/identity-and-access-management-4a16</guid>
      <description>&lt;p&gt;Have you ever heard of the concept of Identity and Access Management? Here is a brief introduction to Identity and Access Management and to its main components.&lt;/p&gt;




&lt;p&gt;IAM which stands for Identity and Access Management mainly consists of&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Identity Management&lt;/li&gt;
&lt;li&gt; Access Management&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Under Identity Management user is authenticated whether s/he is a legitimate user to the system while under Access Management logged users are granted with necessary privileges to user the system. When considering why we need an IAM it is mainly because of an IAM could prevent inside threats. As per the statistics 60% of internal threats are caused by organizational users while 10% of them are caused by partners and vendors.&lt;/p&gt;

&lt;p&gt;Product/Service Components of an IAM&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Authentication&lt;/li&gt;
&lt;li&gt; Authorization&lt;/li&gt;
&lt;li&gt; User Management&lt;/li&gt;
&lt;li&gt; Directory Services&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When implementing all the four components should be implemented.&lt;br&gt;
Let’s look at each component separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication
&lt;/h2&gt;

&lt;p&gt;Under the process of authentication, it tries to verify the identity of the user. For this verification process session and token management, password management, Multifactor Authentication (MFA) can be used. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Password Management&lt;/strong&gt; – The users who have access to several different environments, tend to use same password for every environment. In such situations, a single sign-on master password can be allowed which gives access to other environments also. So that one login allows all the other logins. The fact that says one strong password is better than ten weak passwords concept has been applied here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-factor Authentication&lt;/strong&gt; – MFA is used to validate a user whether s/he is a legitimate user using two or more factors. In MFA combination of something you have, something you know and Something you are criteria are used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authorization
&lt;/h2&gt;

&lt;p&gt;Under authorization a legitimate user is specifying with the right access/privileges to the system. Under proper authorization un-authorized access to the system will be prohibited and data integrity will be secured. To specify the legitimates access,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; role-based access granting&lt;/li&gt;
&lt;li&gt; rule-based (IP) based access granting&lt;/li&gt;
&lt;li&gt; privilege-based access granting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;mechanisms can be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privilege based authorization&lt;/strong&gt; – A Privilege Access Management (PAM) will help in controlling users and their privileges. But we cannot control the activities of a particular user. Here we can user time-based privileges for the user to control their actions. In time-based privilege the users are granted with specific privileges only for a specific time-period. &lt;/p&gt;

&lt;h2&gt;
  
  
  User Management
&lt;/h2&gt;

&lt;p&gt;Under user management, what a specific user can do is controlled. This component ensures that the user is having only what is needed. Not the unnecessary privileges. For the purpose of user management, the following steps can be taken.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Provisioning&lt;/li&gt;
&lt;li&gt; User and role management&lt;/li&gt;
&lt;li&gt; Password management&lt;/li&gt;
&lt;li&gt; Self-services&lt;/li&gt;
&lt;li&gt; Delegated administration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the purpose of user management, under user profile management, policy base profiles can be created. The user profiles that are created under policies can also be managed with password which can be identified as a self-service to the user. The created user profiles are then being assigned to a group profile where a specific user profile can inherent the authorities. But with this group profiles a user may misuse his/her authorities. As a solution for this command level restrictions can be assigned. With the command level restrictions need of higher-level authorizations and real time alerts for dangerous tasks can be implemented. &lt;/p&gt;

&lt;h2&gt;
  
  
  Directory Services
&lt;/h2&gt;

&lt;p&gt;A directory service is a database that stores information about users, devices, and resources. Library object access, IFS access and File share access are identified as the main components in directory services. One of the major concerns in here is attackers target IFS to spread the ransomware/ malware. Therefore, Auditing and Reporting is a key component in IAM solution.&lt;/p&gt;

</description>
      <category>iam</category>
    </item>
  </channel>
</rss>
