<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발 공부 블로그</title>
    <link>https://devstudy1413.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 11 Sep 2026 14:38:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Tymes1413</managingEditor>
    <item>
      <title>Spring modulith 프로젝트에 대해</title>
      <link>https://devstudy1413.tistory.com/221</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=SjSjBZ7mo1g&quot;&gt;https://www.youtube.com/watch?v=SjSjBZ7mo1g&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=SjSjBZ7mo1g&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ulMrr/hyT2CQF7NZ/FH6NoCyFzgjFxKYgErRc3k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=92_184_148_244&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Spring Modulith &amp;ndash; Spring for the Architecturally Curious Developer by Oliver Drotbohm&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/SjSjBZ7mo1g&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아키텍처를 코드로 검증할 수 있는 프로젝트다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>spring</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/221</guid>
      <comments>https://devstudy1413.tistory.com/221#entry221comment</comments>
      <pubDate>Tue, 26 Sep 2023 11:12:50 +0900</pubDate>
    </item>
    <item>
      <title>MSA 의 장점과 단점</title>
      <link>https://devstudy1413.tistory.com/217</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;MSA 로 분리하는지 또는 monolith 로 뭉치는지를 선택하기 위해 MSA 의 장단점을 이해해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점은 독립적인 개발, 디비 분리 등이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점은 transaction 을 들 수 있다. RDBMS 하나로 dao 가 묶이던 시스템의 쿼리가 (데이터를 어디에 저장하냐에 따라 다를 수 있다) 분산되어 RDBMS 가 지원하는 transaction 을 쓸 수 없게 된다. 해결 방법으로는 분산 트랜잭션이 있는데, 이는 복잡도가 높아 유지보수성이 낮아진다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 개의 microservice 를 하나의 transaction 으로 묶어야 한다면 우선 뭉치는 것을 고민해야 한다. 이 자체가 쪼개야 할지를 판단하는 하나의 지표로, 이러한 유스케이스가 많다면 쪼개지 않는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 별개로 최종적 일관성은 분산 트랜잭션 없이 지원할 수 있으며 많은 유스케이스가 이 조건으로 해결이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 최근에는 modular monolith 라는 아키텍처가 유행해서 monolith 의 단점(서비스별 scale out 등)을 일부 상쇄해 준다.&amp;nbsp;&lt;/p&gt;</description>
      <category>project</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/217</guid>
      <comments>https://devstudy1413.tistory.com/217#entry217comment</comments>
      <pubDate>Mon, 24 Jul 2023 08:53:14 +0900</pubDate>
    </item>
    <item>
      <title>데이터 중심 애플리케이션 설계 - 1장 reliable, scalable, maintainable systems</title>
      <link>https://devstudy1413.tistory.com/216</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;Scalablility&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장성이란 증가한 부하에 대처하는 시스템 능력이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부하(load) 란? 부하 매개변수로 표현할 수 있는 값으로, 시스템에 따라 매개변수가 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부하 매개변수는 TPS, DB r/w 비율, 동시 활성 사용자, 캐시 적중률 등이 있다. 시스템에 특정된 매개변수의 예시로 트위터의 인기인 여부가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능이란? 성능 지표로 표현할 수 있으며 튜닝의 목표를 정량적으로 표현한 기준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능 지표는 처리율, 지연, 용량, 사용률, 효율, 확장성, 저하 등이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서적</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/216</guid>
      <comments>https://devstudy1413.tistory.com/216#entry216comment</comments>
      <pubDate>Sun, 23 Jul 2023 15:16:05 +0900</pubDate>
    </item>
    <item>
      <title>생각을 열심히 잘 해야 한다.</title>
      <link>https://devstudy1413.tistory.com/214</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;가장 기본은 도구를 잘 쓰는 것이고, 프로젝트를 하면 스킬이 업그레이드된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자는 비즈니스를 하는 사람으로 생각으로 비즈니스를 구현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자는 비즈니스가 어떻게 하면 더 잘 될까 고민이 제일 중요하지, 그 밖의 다른 건 부수적인 요소다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이런 생각이 쌓여 향후 직무 선택이 바뀌지 않을까?)&lt;/p&gt;</description>
      <category>생각</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/214</guid>
      <comments>https://devstudy1413.tistory.com/214#entry214comment</comments>
      <pubDate>Thu, 6 Jul 2023 23:44:36 +0900</pubDate>
    </item>
    <item>
      <title>join vs left join 헷갈리지 말 것</title>
      <link>https://devstudy1413.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;헷갈리면서 찾기도 어려운 버그다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;left join 을 써야 하는데 join 을 쓸 경우 필요한 데이터가 들어오지 않을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꼭 조심해서 쿼리를 작성하자.&lt;/p&gt;</description>
      <category>실수 기록</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/212</guid>
      <comments>https://devstudy1413.tistory.com/212#entry212comment</comments>
      <pubDate>Sun, 28 May 2023 17:14:33 +0900</pubDate>
    </item>
    <item>
      <title>mappedby 양방향 연관관계 값을 세팅해야 하는 이유</title>
      <link>https://devstudy1413.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;그게 더 객체지향적이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수에서 값을 세팅하지 않을 경우 추상화가 깨지게 되어 재사용성이 떨어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 A 라는 메소드를 호출하는 C 로직에서 문제가 연관관계를 세팅하지 않아도 문제가 없다고 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A 메소드를 다른 곳에서 호출하면 어떤 문제가 생길까?&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B 메소드가 A 를 호출할 경우 값이 세팅되었는지 확인해야 하는 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, B 메소드를 짜는데 A 를 들어다봐야 하고, 추상화가 깨져 객체지향적이지 않은 코드가 되어버린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>jpa</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/211</guid>
      <comments>https://devstudy1413.tistory.com/211#entry211comment</comments>
      <pubDate>Sat, 27 May 2023 16:18:37 +0900</pubDate>
    </item>
    <item>
      <title>어플리케이션 패키징 전략</title>
      <link>https://devstudy1413.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. 계층형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패키지를 3개 (controller, service, repository) 만들고 모든 도메인의 코드를 계층별로 분류한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 초기에는 유용할 수 있으나 코드베이스가 점차 커지면서 분리의 필요성이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 기능 기반 패키지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템을 기능 기반으로 나눈다. 수평적인 계층을 분리한 후 유스케이스별로 수직으로 패키지를 분리한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인 별로 패키지를 나누어 모듈 분리가 될 수 있어 1번보다 나은 구조이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스 룰과 인프라 코드가 섞여 있어 인프라의 변경이 비즈니스 코드의 변경을 불러올 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 포트와 어댑터&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스 룰과 도메인 코드와, 프레임워크나 데이터베이스 등 기술적인 세부 구현과 분리할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 컴포넌트 기반 패키지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바의 경우 같은 패키지에 있어야 public 으로 선언하지 않아도 의존할 수 있다. (package-private) 따라서 컴포넌트 별로 같은 패키지로 묶어 서로 의존이 가능하도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아키텍처는 변경될 수 있으며 필요에 의해 변경되어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요란 유스케이스, 운영, 개발, 배포 등의 관심사가 포함된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(클린 아키텍처 책을 보고 정리)&lt;/p&gt;</description>
      <category>언어/java</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/210</guid>
      <comments>https://devstudy1413.tistory.com/210#entry210comment</comments>
      <pubDate>Sun, 7 May 2023 16:25:35 +0900</pubDate>
    </item>
    <item>
      <title>이벤트 소싱</title>
      <link>https://devstudy1413.tistory.com/209</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;클린 아키텍처 6장 함수형 프로그래밍&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 소싱은 상태가 아닌 트랜잭션을 저장하는 전략이다. 상태가 필요해지면 상태의 시작점부터 모든 트랜잭션을 처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장 공간과 처리 능력이 충분하면 애플리케이션이 완전한 불변성을 가질 수 있도록 만들수 있고 따라서 완전한 함수형으로 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 소싱이라는 단어도 들어봤고 트랜잭션을 저장하는 구조도 본 적이 있는데 두개가 같은건지 처음 알았다.&lt;/p&gt;</description>
      <category>메모장 (노트 대용)</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/209</guid>
      <comments>https://devstudy1413.tistory.com/209#entry209comment</comments>
      <pubDate>Sat, 6 May 2023 22:18:23 +0900</pubDate>
    </item>
    <item>
      <title>대규모 알림 시스템 설계에 대해</title>
      <link>https://devstudy1413.tistory.com/208</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;서버에서 클라이언트에 알림을 발송해야 하는 상황이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스 요구사항 상 알림의 사이즈 제한은 상당히 크며 (GB 단위), 클라이언트는 million 단위이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 중요한 알림이므로 클라이언트로의 전달에 신뢰성을 보장해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 클라이언트 사이드 long-polling&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 서버 push&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 클라이언트가 HTTP 서버가 되거나 서버가 TCP 양방향 커넥션 기능을 제공해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 미들웨어 사용 - Redis pub sub&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버가 TCP 커넥션 기능을 구현할 경우 reconnect 로직을 구현하기가 까다롭다. Redis pub sub 을 사용하면 이런 부분이 구현되어 제공된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 미들웨어 사용 - Message queue&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redis 를 사용할 경우 in-memory 메시징이라서 알림의 사이즈가 클 경우가 우려된다. File system 기반의 큐를 사용해서 이러한 문제를 해결할 수 있다. 다만 메시지큐의 작동 방식에 따라 consumer 사이드에서 폴링으로 가져가는 경우, push 방식인 경우가 나뉠 수 있으니 이런 부분도 고려해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* AWS 를 사용할 경우, SNS, SQS 등의 서비스가 제공된다.&lt;/p&gt;</description>
      <category>생각</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/208</guid>
      <comments>https://devstudy1413.tistory.com/208#entry208comment</comments>
      <pubDate>Sun, 9 Apr 2023 15:38:26 +0900</pubDate>
    </item>
    <item>
      <title>java module vs maven module</title>
      <link>https://devstudy1413.tistory.com/207</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Java platform module system (jpms) 와 maven module 이 있는데 서로 헷갈리는 개념이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스택오버플로우에 관련된 글이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/64866180/difference-between-multi-module-pom-and-java-module-system&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/64866180/difference-between-multi-module-pom-and-java-module-system&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1679831892503&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Difference between multi-module (pom) and java module system&quot; data-og-description=&quot;I'm trying to understand the difference(s) between structuring a project with the Java Platform Module System (JPMS) versus structuring a project using multi-poms. Is the main difference that the J...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/64866180/difference-between-multi-module-pom-and-java-module-system&quot; data-og-url=&quot;https://stackoverflow.com/questions/64866180/difference-between-multi-module-pom-and-java-module-system&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/TW3DQ/hyR2TuCRkg/ZzkjvzBWqLhvUcRKc2XUE1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/64866180/difference-between-multi-module-pom-and-java-module-system&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/64866180/difference-between-multi-module-pom-and-java-module-system&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/TW3DQ/hyR2TuCRkg/ZzkjvzBWqLhvUcRKc2XUE1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Difference between multi-module (pom) and java module system&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I'm trying to understand the difference(s) between structuring a project with the Java Platform Module System (JPMS) versus structuring a project using multi-poms. Is the main difference that the J...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPMS 는 access visibility (public, protected 이런 것) 에 관한 기능이고 module-info.java 파일로 정의한다. 런타임에 classpath 에 명시한 jar 파일이&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;maven module 은 여러 프로젝트를 하나의 프로젝트처럼 관리할 수 있도록 하는 기능이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어플리케이션을 개발할 때 모놀리스 --&amp;gt; msa 로 변환하는 방식을 많이 하는데, maven multi module 로 구성을 하면 컴포넌트를 분리하기가 쉬워진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gradle multi projects&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.gradle.org/current/userguide/multi_project_builds.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.gradle.org/current/userguide/multi_project_builds.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1679833034789&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Structuring and Building a Software Component with Gradle&quot; data-og-description=&quot;If you are building a software of a certain size with Gradle, you have two basic structuring mechanisms. First, this chapter describes how to structure your software project using a Gradle multi-project. In this documentation, we consider this to be a sing&quot; data-og-host=&quot;docs.gradle.org&quot; data-og-source-url=&quot;https://docs.gradle.org/current/userguide/multi_project_builds.html&quot; data-og-url=&quot;https://docs.gradle.org/current/userguide/multi_project_builds.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.gradle.org/current/userguide/multi_project_builds.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.gradle.org/current/userguide/multi_project_builds.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Structuring and Building a Software Component with Gradle&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;If you are building a software of a certain size with Gradle, you have two basic structuring mechanisms. First, this chapter describes how to structure your software project using a Gradle multi-project. In this documentation, we consider this to be a sing&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.gradle.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>언어/java</category>
      <author>Tymes1413</author>
      <guid isPermaLink="true">https://devstudy1413.tistory.com/207</guid>
      <comments>https://devstudy1413.tistory.com/207#entry207comment</comments>
      <pubDate>Sun, 26 Mar 2023 21:10:33 +0900</pubDate>
    </item>
  </channel>
</rss>