본문으로 건너뛰기

왜 Laravel인가? (with Go)

📝 초안 (Draft)

이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.

Multi-SaaS Kit이 Laravel + Go 하이브리드 아키텍처를 핵심으로 선택한 이유를 설명합니다.

핵심 선택: 4대 기술 스택

Multi-SaaS Kit은 모든 플랫폼을 커버하는 풀스택 기술 스택을 제공합니다:

플랫폼기술역할
웹 (서버)Laravel웹 애플리케이션, API, 비즈니스 로직, Admin
고성능 서비스Go실시간 처리, 대용량 배치, WebSocket
모바일 앱FlutteriOS/Android 단일 코드베이스
데스크탑 앱TauriWindows/macOS/Linux 경량 앱
┌─────────────────────────────────────────┐
│ Laravel + Go (서버) │
│ 웹 API, 인증, 비즈니스 로직, 실시간 │
└────────────┬───────────┬────────────────┘
│ REST/ │
│ GraphQL │
↓ ↓
┌────────────┐ ┌────────────┐
│ Flutter │ │ Tauri │
│ (모바일) │ │ (데스크탑) │
│ iOS/Android│ │Win/Mac/Lin │
└────────────┘ └────────────┘

"Start with Laravel, Scale with Go, Reach everywhere with Flutter & Tauri"

AI 시대의 기술 스택 선택

"단일 언어" 시대에서 "최적 도구" 시대로

과거에는 Next.js, React, React Native처럼 JavaScript 단일 스택이 유행했습니다. 개발자가 하나의 언어만 학습하면 되는 이점이 컸기 때문입니다.

하지만 AI 코딩 시대에서는 상황이 달라졌습니다:

  • AI는 언어에 관계없이 동일한 품질의 코드 생성
  • 개발자의 언어 학습 비용이 크게 감소
  • 각 영역에 최적화된 도구를 선택하는 것이 유리

→ 그래서 우리는 웹(Laravel), 고성능(Go), 모바일(Flutter), 데스크탑(Tauri)에 각각 최적의 기술을 선택했습니다.


Laravel 선택 이유

개발 생산성 최우선

SaaS 스타트업에서 가장 중요한 것은 빠른 출시입니다. Laravel은 풀스택 프레임워크 중 최고의 개발 생산성을 제공합니다.

기능 구현LaravelSpring.NETDjangoRails
인증 시스템2시간16시간8시간4시간2시간
CRUD API4시간12시간8시간6시간4시간
파일 업로드2시간8시간6시간4시간3시간
결제 통합8시간16시간12시간10시간8시간
총 개발 시간16시간52시간34시간24시간17시간

"Batteries Included" 철학

Laravel은 SaaS 개발에 필요한 모든 것을 기본 제공합니다:

  • 인증/권한: Breeze, Sanctum (API 토큰)
  • 큐/잡: Horizon으로 백그라운드 작업 관리
  • 캐싱: Redis 통합 기본 지원
  • 이메일: 다양한 드라이버 지원
  • 파일 스토리지: S3, 로컬 등 통합 API
  • 테스팅: PHPUnit, Pest 기본 설정

Spring vs Laravel: 핵심 트레이드오프

Laravel + Go와 Spring + Go를 최종 비교할 때, 두 가지 상반된 접근 방식이 있습니다:

두 가지 접근 방식

접근Spring + GoLaravel + Go
MSP 기능✅ 내장 (Spring Cloud)⚠️ 별도 구성 필요
개별 기능 구현❌ 일일이 구현 필요✅ 생태계 패키지 활용
초기 개발 속도느림 (설정 + 구현)빠름 (패키지 조합)
대규모 확장쉬움 (내장 도구)Go로 별도 처리

Spring Cloud의 MSP 장점

Spring 진영의 핵심 강점은 Microservice Platform (MSP) 기능입니다:

Spring Cloud 생태계:
├── Service Discovery (Eureka, Consul)
├── Config Server (중앙 설정 관리)
├── API Gateway (Spring Cloud Gateway)
├── Circuit Breaker (Resilience4j)
├── Distributed Tracing (Sleuth, Zipkin)
└── Load Balancing (Ribbon, Spring Cloud LoadBalancer)

장점: 엔터프라이즈 수준의 마이크로서비스 아키텍처가 내장되어 있어 대규모 확장 시 유리

단점: 개별 비즈니스 기능(인증, 권한, 결제, Admin 등)은 직접 구현해야 함

Laravel 생태계의 장점

Laravel은 비즈니스 기능 구현에서 압도적 우위를 가집니다:

Laravel 생태계:
├── Spatie Permission (권한 시스템)
├── Filament (Admin Panel)
├── Sanctum/Passport (API 인증)
├── Cashier (결제)
├── Horizon (큐 모니터링)
├── Telescope (디버깅)
├── Stancl/Tenancy (멀티테넌시)
└── 수백 개의 검증된 패키지...

장점: 복잡한 비즈니스 기능을 패키지 조합으로 빠르게 구현

단점: MSP 기능은 Go나 외부 서비스(Kong, Envoy 등)로 별도 구성 필요

우리의 선택: Laravel + Go

핵심 결정

"기능을 빠르게 구현하고, MSP는 Go로 해결한다"

Spring으로 개별 기능을 일일이 구현하고 MSP에서 이득을 취하는 것보다, Laravel 생태계로 기능들을 빠르게 완성하고 MSP를 Go로 직접 구현하는 것이 더 실용적입니다.

선택 이유:

  1. 초기 속도가 생명: SaaS 스타트업은 빠른 시장 진입이 핵심
  2. MSP는 나중에: 대부분의 SaaS는 초기에 MSP 수준의 확장이 필요 없음
  3. Go의 유연성: 필요한 MSP 기능만 Go로 가볍게 구현 가능
  4. 비용 효율: Spring 전문가(12주 학습) vs Laravel 개발자(2주 학습)
개발 시간 비교 (동일 기능 구현):

Laravel + Go:
├── 인증/권한: 2h (Spatie Permission)
├── Admin Panel: 4h (Filament)
├── 멀티테넌시: 8h (Stancl/Tenancy)
├── 실시간 처리: 16h (Go WebSocket)
└── 총: ~30h

Spring + Go:
├── 인증/권한: 16h (직접 구현)
├── Admin Panel: 40h (직접 구현)
├── 멀티테넌시: 40h (직접 구현)
├── 실시간 처리: 12h (Go WebSocket)
└── 총: ~108h

Phase별 MSP 전략

Phase트래픽MSP 접근
Phase 1< 100K/일MSP 불필요 (Laravel 모놀리스)
Phase 2100K-1M/일Go API Gateway + 기본 로드밸런싱
Phase 3> 1M/일Kubernetes + Service Mesh (Istio/Linkerd)

핵심: Phase 1-2에서는 Spring Cloud의 MSP 기능이 과잉 스펙입니다. 필요한 시점에 Go나 클라우드 네이티브 도구로 구성하면 됩니다.


기술 스택 비교 분석

종합 평가 매트릭스

항목LaravelSpring.NETDjangoRailsExpressLaravel + Go
개발 생산성⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
성능⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
확장성⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
생태계⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
학습곡선⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
유지보수⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
엔터프라이즈⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
종합 점수29/3530/3530/3525/3524/3527/3533/35
Laravel + Go가 최고 점수인 이유
  • 개발 속도: Laravel의 최고 생산성 유지
  • 성능: Go로 병목 구간 해결
  • 확장성: 마이크로서비스로 점진적 확장
  • 리스크 분산: 단일 기술 의존도 감소

학습 곡선 비교

쉬움 ← ─────────────────────────────────── → 어려움

Rails ─── Laravel ─── Django ─── Express ─── .NET ─── Spring
1주 2주 2주 2주 4주 12주

Laravel은 2주 만에 프로덕션 수준의 애플리케이션을 만들 수 있습니다.


Laravel의 핵심 강점

1. Eloquent ORM

직관적이고 표현력 있는 ORM:

// 복잡한 쿼리도 간결하게
$users = User::where('tenant_id', $tenantId)
->with(['organization', 'workspace'])
->whereHas('permissions', fn($q) =>
$q->where('level', '<=', 3)
)
->latest()
->paginate(15);

2. 풍부한 패키지 생태계

패키지용도GitHub Stars
Spatie 시리즈권한, 미디어, 설정 등50,000+
FilamentAdmin Panel15,000+
Stancl/Tenancy멀티테넌시3,000+
Laravel Horizon큐 모니터링공식
Laravel SanctumAPI 인증공식

3. 멀티테넌시 구현 용이성

Stancl/Tenancy와 PostgreSQL RLS 조합으로 데이터베이스 레벨 격리:

// 테넌트 자동 식별
tenancy()->initialize($tenant);

// 이후 모든 쿼리에 자동으로 tenant_id 필터 적용
$users = User::all(); // WHERE tenant_id = 현재_테넌트

4. Filament Admin Panel

권한 시스템 (Level 0~6, ADR-058)에 최적화된 Admin Panel:

// 권한 레벨별 리소스 자동 필터링
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->visibleTo(auth()->user());
}

성능과 확장성

성능 벤치마크

테스트 환경: 8 Core, 32GB RAM, PostgreSQL
부하: 10,000 동시 접속

단순 API 응답 (req/s):
Laravel : 8,000 ████████
Django : 6,000 ██████
Rails : 4,000 ████

복잡한 비즈니스 로직 (req/s):
Laravel : 2,500 █████
Django : 2,000 ████
Rails : 1,500 ███

Go 마이크로서비스

Laravel만으로 충분하지 않은 영역이 있습니다. Go는 이를 완벽히 보완합니다.

역할 분담

영역Laravel 담당Go 담당
프론트엔드✅ Blade, Livewire, Inertia-
인증/권한✅ 권한 분류 (Level 0~6) 관리-
CRUD API✅ RESTful API-
비즈니스 로직✅ 복잡한 워크플로우-
실시간 처리-✅ WebSocket
대용량 배치-✅ 배치 처리
파일 처리-✅ 이미지/동영상
메트릭/모니터링-✅ Prometheus
고성능 API-✅ gRPC

하이브리드 아키텍처

┌─────────────────────────────────────────┐
│ Nginx Load Balancer │
└────────────┬───────────┬────────────────┘
↓ ↓
┌────────────┐ ┌────────────┐
│ Laravel │ │ Go │
│ Frontend │ │ Services │
│ & API │ │ │
└─────┬──────┘ └──────┬─────┘
↓ ↓
┌────────────────────────────┐
│ PostgreSQL + RLS │
└────────────────────────────┘

성능 벤치마크

테스트 환경: 8 Core, 32GB RAM, 10,000 동시 접속

단순 API 응답 (req/s):
Go : 150,000 ████████████████████████████████
Express : 30,000 ████████
Laravel : 8,000 ██

Laravel + Go (하이브리드):
- API Gateway (Laravel): 2,500 req/s
- 고성능 서비스 (Go): 50,000 req/s
- 실제 처리량: 15,000-20,000 req/s ← 충분!

확장 전략: 점진적 도입

Phase 1 (< 100K 일일 사용자):
└── Laravel 모놀리스
• 빠른 MVP 개발
• 단일 배포 단위

Phase 2 (100K - 1M):
├── Laravel: CRUD, 인증, 비즈니스 로직
└── Go: 실시간 처리, 대용량 배치
• 병목 부분만 Go로 분리
• Read Replica 추가

Phase 3 (> 1M):
└── 완전한 마이크로서비스
• Kubernetes 오토스케일링
• PostgreSQL 샤딩
핵심 원칙

"Start with Laravel, Scale with Go"

90%의 요청은 Laravel로 충분합니다. 10%의 고성능 요구만 Go가 처리합니다.


트래픽 규모별 적합도

트래픽 규모LaravelSpring.NETDjangoRails
< 1K/일⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
1K-10K/일⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
10K-100K/일⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
100K-1M/일⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Multi-SaaS Kit 타겟

Multi-SaaS Kit은 1인 개발자~중소 개발사를 타겟으로 합니다. 대부분의 초기 SaaS는 10K-100K/일 트래픽 범위에서 시작하며, Laravel은 이 범위에서 최고의 비용 대비 효과를 제공합니다.


클라이언트 기술 스택

서버(Laravel + Go)와 함께 모든 플랫폼을 커버하는 클라이언트 기술 스택입니다.

Flutter - 모바일 앱

단일 코드베이스로 iOS와 Android를 동시에 개발합니다.

항목FlutterReact Native
성능네이티브 수준브릿지 오버헤드
개발 속도Hot ReloadHot Reload
UI 일관성완벽 동일플랫폼별 차이
앱 크기5-15MB10-20MB
지원Google 공식Meta 지원

장점:

  • ✅ 한 번의 개발로 iOS/Android 동시 지원
  • ✅ 네이티브 수준 성능 (Dart 컴파일)
  • ✅ Hot Reload로 빠른 개발
  • ✅ Material Design + Cupertino 위젯 기본 제공

적합한 경우:

  • 빠른 MVP 개발과 시장 진입
  • 일관된 UI/UX가 중요한 서비스
  • 중소규모 개발팀

Tauri - 데스크탑 앱

Electron의 90% 크기 감소, Rust 기반 보안성.

항목TauriElectron
번들 크기~10MB50-150MB
메모리 사용30-50MB200-500MB
보안Rust (메모리 안전)JavaScript
성능네이티브브라우저 엔진
웹 기술 활용✅ 가능✅ 가능

장점:

  • ✅ 초경량 번들 (Electron 대비 90% 감소)
  • ✅ 낮은 메모리 사용량
  • ✅ Rust 기반 보안성
  • ✅ 기존 웹 프론트엔드 재사용 가능

적합한 경우:

  • 리소스 제약이 있는 환경
  • 보안이 중요한 엔터프라이즈 앱
  • 기존 웹 애플리케이션의 데스크탑 버전

통합 아키텍처

          Laravel + Go API

REST / GraphQL / WebSocket

┌────────────┼────────────┐
↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐
│ 웹 앱 │ │Flutter │ │ Tauri │
│ (SPA) │ │(모바일) │ │(데스크탑)│
│Vue/React│ │iOS/Andr│ │Win/Mac │
└────────┘ └────────┘ └────────┘

API 우선 설계:

  • Laravel이 모든 비즈니스 로직 처리
  • 클라이언트는 순수 프레젠테이션 레이어
  • JWT 기반 통합 인증
  • 실시간 업데이트는 WebSocket (Go 서비스)

비용 효율성

초기 개발 비용 (6개월 프로젝트 기준)

스택개발자 수개발 기간총 비용
Laravel3명4개월$100K
Spring5명6개월$300K
.NET4명5개월$183K
Django3명4개월$95K
Rails3명3.5개월$92K

호스팅 접근성

호스팅 유형LaravelDjangoRailsNode.js
공유 호스팅✅ 가능❌ 어려움❌ 어려움❌ 어려움
VPS✅ 최적✅ 필요✅ 필요✅ 필요
클라우드✅ 지원✅ 지원✅ 지원✅ 지원
월 최소 비용$5$10$10$10

PHP의 현대적 발전

PHP 8.x 주요 기능

Laravel은 최신 PHP 기능을 적극 활용합니다:

// Constructor Property Promotion
public function __construct(
public readonly string $name,
public readonly int $permissionLevel,
) {}

// Named Arguments
User::create(
name: '홍길동',
email: 'hong@example.com',
permissionLevel: 6,
);

// Match Expression
$levelName = match($level) {
0 => 'Platform Admin',
1 => 'SaaS Admin',
2 => 'Tenant Admin',
default => 'Member',
};

PHP 성능 개선

PHP 버전성능 (상대값)메모리 사용량
PHP 7.4100%100%
PHP 8.0120%95%
PHP 8.2140%90%
PHP 8.3150%88%

결론: Laravel + Go + Flutter + Tauri

4대 기술 스택의 시너지

요구사항솔루션
빠른 MVP 개발Laravel의 최고 생산성
고성능 처리Go 마이크로서비스
멀티테넌시Stancl/Tenancy + PostgreSQL RLS
Level 0~6 계층 권한Filament + Spatie Permission
모바일 앱Flutter (iOS/Android)
데스크탑 앱Tauri (Win/Mac/Linux)
비용 효율저렴한 호스팅, 적은 개발 인력

핵심 메시지

풀스택 생태계

"Laravel + Go + Flutter + Tauri = 완전한 풀스택 생태계"

  • Laravel: 웹 애플리케이션의 뼈대
  • Go: 고성능이 필요한 부분의 가속기
  • Flutter: 모바일 시장 진출의 열쇠
  • Tauri: 데스크탑 시장 확장의 도구

"Start with Laravel, Scale with Go, Reach everywhere with Flutter & Tauri"

왜 이 조합인가?

  1. 점진적 도입: 초기에는 Laravel만으로 시작, 필요시 Go/Flutter/Tauri 추가
  2. 비용 최적화: 각 플랫폼에 최적화된 도구로 개발 비용 절감
  3. 위험 분산: 단일 기술 의존도 감소
  4. 미래 대비: 웹 → 모바일 → 데스크탑으로 자연스러운 확장

관련 문서