<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>devkuma – MSA</title>
    <link>https://www.devkuma.com/en/tags/msa/</link>
    <image>
      <url>https://www.devkuma.com/en/tags/msa/logo/180x180.jpg</url>
      <title>MSA</title>
      <link>https://www.devkuma.com/en/tags/msa/</link>
    </image>
    <description>Recent content in MSA on devkuma</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>kc@example.com (kc kim)</managingEditor>
    <webMaster>kc@example.com (kc kim)</webMaster>
    <copyright>The devkuma</copyright>
    
	  <atom:link href="https://www.devkuma.com/en/tags/msa/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>MSA(Microservices Architecture)</title>
      <link>https://www.devkuma.com/en/docs/msa/</link>
      <pubDate>Thu, 30 Sep 2021 14:54:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/en/docs/msa/</guid>
      <description>
        
        
        &lt;h2 id=&#34;what-is-msa&#34;&gt;What Is MSA?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Microservices Architecture.&lt;/li&gt;
&lt;li&gt;It emerged to overcome the limitations of Monolithic Architecture, where every system component is integrated into a single project.&lt;/li&gt;
&lt;li&gt;It is a framework composed of small, independently deployable services that each perform a specific function.&lt;/li&gt;
&lt;li&gt;MSA divides one system into completely independent services that can each be deployed separately.&lt;/li&gt;
&lt;li&gt;Each service exchanges data through RESTful APIs and together forms one large service.&lt;/li&gt;
&lt;li&gt;It focuses on a single business capability while allowing different technology stacks such as programming languages and databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;characteristics-of-msa&#34;&gt;Characteristics of MSA&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Services can interact only through APIs.&lt;/li&gt;
&lt;li&gt;Each service exposes its end-point as an API.&lt;/li&gt;
&lt;li&gt;The practical implementation details are abstracted.&lt;/li&gt;
&lt;li&gt;Technical details such as internal logic, architecture, programming language, database, and quality management systems are thoroughly hidden behind the service API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;advantages-of-msa&#34;&gt;Advantages of MSA&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Each service is modularized, and modules communicate through RPC, Message-driven APIs, and similar mechanisms.&lt;/li&gt;
&lt;li&gt;Individual services can be developed quickly and maintained more easily.&lt;/li&gt;
&lt;li&gt;Each service can use an appropriate technology stack.&lt;/li&gt;
&lt;li&gt;Services can be deployed independently.
&lt;ul&gt;
&lt;li&gt;Continuous deployment(CD) can also be lighter than in a monolithic system.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Each service can scale out independently according to its load.
&lt;ul&gt;
&lt;li&gt;This offers substantial benefits in terms of memory and CPU usage.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Even if one service fails, the entire service does not fail.&lt;/li&gt;
&lt;li&gt;Each service can be built with different languages and frameworks.&lt;/li&gt;
&lt;li&gt;Services are easy to extend.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;disadvantages-of-msa&#34;&gt;Disadvantages of MSA&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It is relatively more complex than a monolithic architecture.&lt;/li&gt;
&lt;li&gt;Because services communicate through RESTful APIs, that communication has a cost.&lt;/li&gt;
&lt;li&gt;Since services are separated, testing and transaction handling are difficult.
&lt;ul&gt;
&lt;li&gt;When communication failures or server load occur, how to maintain transactions must be decided and implemented.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Because calls between services are continuous, debugging and integration testing are difficult.&lt;/li&gt;
&lt;li&gt;Deploying to an actual production environment is not easy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;msa-server-components&#34;&gt;MSA Server Components&lt;/h2&gt;
&lt;h3 id=&#34;service-discovery-server&#34;&gt;Service Discovery Server&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spring: Netflix Eureka&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;web-service-client&#34;&gt;Web Service Client&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spring: Netflix Feign&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;client-side-load-balancer&#34;&gt;Client-side Load Balancer&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spring: Netflix Ribbon&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;circuit-breaker&#34;&gt;Circuit Breaker&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spring: Netflix Hystrix&lt;/li&gt;
&lt;li&gt;When the failure rate of requests sent from a client to a remote server exceeds a certain threshold, the server is considered problematic, and meaningless requests are no longer sent. Instead, errors are returned quickly(fail fast).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;api-gateway&#34;&gt;API Gateway&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spring: Netflix Zuul, Gateway&lt;/li&gt;
&lt;li&gt;Reverse proxy server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://futurecreator.github.io/2018/09/14/what-is-microservices-architecture/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Microservices Architecture&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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