반응형

📝Spring WebFlux

Spring 5부터 도입된 리액티브 프로그래밍 기반 웹 프레임워크로 기본적으로 비동기에 탁월해 비동기가 많이 필요한 프로젝트에 사용됩니다. (대규모 요청 처리, 실시간 데이터 스트리밍, IoT, WebSocket 등...)

 

 

📝Netty

WebFlux는 톰캣 대신 Netty를 사용해 Non-blocking I/O 처리합니다.

 

📝.NET

.NET (개발 플랫폼)
  ├─ ASP.NET / ASP.NET Core (웹 애플리케이션 개발)
  ├─ WinForms / WPF (데스크톱 앱 개발)
  ├─ Xamarin / MAUI (모바일 앱 개발)
  ├─ Unity (게임 개발)
  └─ 기타(클라우드, AI, IoT 등)

전체 개발 플랫폼(런타임 + 라이브러리 + 도구)으로 다양한 플랫폼에서 개발하기 위해 다양한 프레임워크들을 제공한다.

예를 들면 웹 개발자의 닷넷이면 ASP .NET을 의미한다.

 

📝ASP

.NET에서 제공하는 웹 애플리케이션을 만들기 위한 프레임워크입니다

 

Classic ASP (1996 ~ 2000)

<%
  Response.Write("Hello World")
%>
<html>
  <body>
    <h1><%= "Hello from Classic ASP!" %></h1>
  </body>
</html>

VBScript 기반으로 HTML에 스크립트가 섞인 구조

 

 

ASP.NET WebForms (2002~) [ .NET Framework]

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
  <body>
    <asp:Label ID="lblMessage" runat="server" />
    <asp:Button ID="btnClick" runat="server" Text="Click Me" OnClick="btnClick_Click" />
  </body>
</html>

aspx.cs로 로직과 UI를 분리한 형태

 

 

ASP.NET MVC (2009~) [ .NET Framework]

public class HomeController : Controller
{
    public IActionResult Index()
    {
        ViewBag.Message = "Hello from ASP.NET MVC!";
        return View();
    }
}

Model-View-Controller 패턴 도입한 형태

 

 

ASP.NET Core (2016~)

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello from ASP.NET Core!");

app.Run();

다양한 플랫폼에 배포 가능 (원래 Window에만 가능했음)

경량 서버 및 다양한 라이브러리 지원

 

 

📝멀티모듈 (Multi-Module)

하나의 소프트웨어 프로젝트를 여러 개의 모듈로 분리하여 관리하는 아키텍처나 프로젝트 구조를 의미합니다

 

 

  • 모듈별 독립성
    • 각 모듈은 별도 빌드 가능하며, 특정 기능(도메인, 라이브러리, API)을 담당
  • 공유 및 재사용성
    • 공용 모듈(Core, Utils 등)을 여러 모듈에서 사용 가능
  • 의존성 관리
    • 모듈 간 참조 관계를 명확히 관리
  • 빌드 효율화
    • 변경된 모듈만 빌드 가능 → 빌드 속도 향상

 

Multi-Module 예제

 

root-project
 ├─ module-core
 ├─ module-service
 └─ module-api

 

 

📝 Monorepo (모노레포)

Monorepo는 여러 개의 프로젝트를 하나의 저장소(Repository)에서 관리하는 방식을 의미합니다.

 

 

Monorepo 예제

/monorepo
 ├─ /frontend
 ├─ /backend
 └─ /mobile

 

MultiModule + Monorepo 예제

/company-repo (Monorepo)
 ├─ /service-order              (주문 서비스)
 │    ├─ order-api              (REST API 모듈)
 │    ├─ order-core             (도메인 로직 모듈)
 │    ├─ order-database         (DB 접근 모듈)
 │    └─ build.gradle
 │
 ├─ /service-payment            (결제 서비스)
 │    ├─ payment-api
 │    ├─ payment-core
 │    ├─ payment-integration    (외부 결제 연동 모듈)
 │    └─ build.gradle
 │
 ├─ /shared-libraries           (공유 라이브러리)
 │    ├─ logging
 │    ├─ utils
 │    └─ messaging
 │
 ├─ settings.gradle             (전체 모듈 설정)
 └─ build.gradle                (루트 빌드 설정)

 

 

🔗 참고 및 출처

https://com789.tistory.com/44

반응형