Node.js 생태계에서 Prisma는 "그냥 쓰는 ORM"이 됐다. 자동완성이 잘 되고, 스키마 파일 하나로 DB를 관리할 수 있다는 게 매력이다. 그런데 실제로 써보면 생각보다 불편한 지점도 꽤 있다. 이 글에서는 Prisma의 장점과 단점을 솔직하게 정리해본다.

장점이래서 다들 쓴다
타입 안전성이 진짜다
schema.prisma에 모델을 정의하면, 모든 쿼리 결과와 파라미터에 자동으로 타입이 붙는다. TypeScript와 함께 쓰면 런타임 에러가 눈에 띄게 줄어든다. IDE 자동완성도 잘 된다.
스키마 파일 하나로 모든 게 끝난다
prisma/schema.prisma 파일이 DB 구조의 단일 진실 공급원이 된다. 마이그레이션 생성, 클라이언트 코드 생성까지 prisma migrate dev 하나로 연결된다. 팀원이 새로 들어와도 온보딩이 빠르다.
가독성 높은 쿼리 문법
SQL을 직접 쓰거나 메서드 체이닝으로 복잡해지는 다른 ORM과 달리, Prisma는 객체 형태의 쿼리 문법을 사용한다. 중첩 관계 조회도 include 하나로 직관적으로 표현된다.
Prisma Studio — GUI로 데이터 확인
npx prisma studio를 실행하면 브라우저에서 DB 데이터를 바로 보고 수정할 수 있다. 개발 중 빠른 확인에 유용하다.

 

마이그레이션 히스토리 관리
변경 사항이 SQL 파일로 누적되고, prisma migrate deploy로 프로덕션에 안전하게 적용할 수 있다. Docker Compose 기반 배포에서 컨테이너 시작 시 자동 마이그레이션 패턴과 궁합이 좋다.

단점이건 알고 써야 한다
복잡한 쿼리는 결국 Raw SQL
GROUP BY, 윈도우 함수, 복잡한 서브쿼리 등 Prisma의 추상화가 커버하지 못하는 영역이 생각보다 넓다. 결국 $queryRaw를 써야 하는 상황이 오고, 그러면 타입 안전성도 사라진다.
N+1 문제가 조용히 발생한다
관계 데이터를 반복문 안에서 조회하면 쿼리가 N번 나간다. Prisma는 이를 자동으로 막아주지 않는다. 의식적으로 include를 쓰거나, findMany로 미리 가져와야 한다.
번들 사이즈와 콜드 스타트
Prisma 클라이언트는 쿼리 엔진 바이너리를 포함하기 때문에 번들이 무겁다. Lambda 같은 서버리스 환경에서는 콜드 스타트가 눈에 띄게 느려지는 경우가 있다.
스키마 변경 시 팀 협업 충돌
여러 명이 동시에 schema.prisma를 수정하면 마이그레이션 히스토리 충돌이 발생할 수 있다. Git 브랜치 전략과 마이그레이션 관리 규칙을 팀 차원에서 미리 정해두지 않으면 골치 아프다.
JPA에 익숙하다면 개념이 다르다
Dirty Checking, 영속성 컨텍스트, LAZY 로딩 같은 JPA 개념이 Prisma에는 없다. 명시적으로 데이터를 가져오고 업데이트해야 하며, 트랜잭션 처리 방식도 다르다. Spring 배경이라면 초반에 적응 비용이 있다.

한 줄 결론
Prisma는 중소 규모 Node.js 프로젝트에서 생산성이 높다. 타입 안전성과 개발자 경험은 업계 최고 수준이다. 다만 복잡한 쿼리가 많거나 서버리스 환경이라면 Raw SQL 혼용 전략을 처음부터 고려해야 한다. 무조건 좋은 도구는 없고, 프로젝트 성격에 맞게 선택하는 게 맞다.
LIST

📌 서론 — 왜 이 구조를 쓰는가

MSA를 설계하다 보면 항상 부딪히는 고민이 있다.

  • DB를 서비스마다 완전히 분리할 것인가?
  • 아니면 하나의 DB 인스턴스에서 스키마만 나눌 것인가?

특히 초기 스타트업이나 사내 시스템에서는 다음 이유로
PostgreSQL 단일 인스턴스 + 스키마 분리를 선택하는 경우가 많다.

  • 인프라 비용 절감
  • 운영 복잡도 감소
  • 빠른 개발 속도

하지만 이 구조는 “MSA처럼 보이지만 실제로는 강하게 결합된 구조”가 될 위험이 있다.


📌 구조 개요

PostgreSQL (Single Instance)
├── auth_schema
├── order_schema
├── payment_schema
└── user_schema
 
  • 하나의 DB 인스턴스
  • 서비스별 schema 분리
  • 물리적 분리는 없음 (논리적 분리)

📌 영향도 분석 (핵심)

1️⃣ 장애 전파 (Blast Radius 문제)

문제

  • DB 인스턴스 하나가 죽으면 전체 서비스 다운

예시

  • payment에서 lock 발생 → DB 전체 성능 저하 → auth까지 영향

👉 MSA의 핵심인 장애 격리 실패


2️⃣ 리소스 경쟁 (CPU / I/O / Connection Pool)

문제

  • 모든 서비스가 동일 리소스 공유

케이스

  • 배치 (정산) 작업 → 디스크 I/O 폭증
  • → 실시간 API latency 증가

👉 특히 르무엘님 하는 “정산 배치”에서 자주 터짐


3️⃣ 트랜잭션 결합 위험

문제

  • cross-schema join이 쉬움
 
SELECT *
FROM order_schema.orders o
JOIN payment_schema.payments p
ON o.id = p.order_id;
 

👉 이 순간 MSA 깨짐

  • 서비스 간 DB 의존 발생
  • 나중에 분리 불가능한 구조 됨

4️⃣ 배포 독립성 저하

문제

  • DB migration 충돌

예시

  • auth 서비스 migration 실행
  • payment 서비스와 lock 충돌

👉 Flyway/Liquibase 운영 난이도 상승


5️⃣ 보안/권한 관리 복잡도

문제

  • schema level 권한 관리 필요
 
GRANT USAGE ON SCHEMA auth_schema TO auth_user;
 

👉 잘못 설정하면:

  • 다른 서비스 데이터 접근 가능
  • 데이터 격리 실패

6️⃣ 스케일링 한계

문제

  • 특정 서비스만 확장 불가

예:

  • search 서비스만 트래픽 폭증
  • → DB 전체 스케일 필요

👉 비용 비효율 발생

 

 

📌 언제 써도 되는가 (현실적인 기준)

✅ 적합한 상황

  • 초기 스타트업 / PoC
  • 트래픽 낮음
  • 팀 규모 작음
  • 빠른 개발이 중요한 경우

👉 “MSA 흉내 + 빠른 실행” 단계


❌ 피해야 하는 상황

  • 금융 / 결제 / 정산 시스템
  • 트래픽 높은 서비스
  • 서비스 간 완전한 독립 필요

👉 르무엘님 구조는 사실 여기 해당됨


📌 실무 대응 전략 (중요)

1️⃣ 강제 격리 룰 설정

  • cross-schema join 금지
  • DB 접근은 서비스 내부에서만

👉 코드 리뷰로 강제


2️⃣ 커넥션 풀 분리

  • 서비스별 datasource 분리
 
maxPoolSize: 10 (service별 제한)
 

👉 특정 서비스가 DB 독점 못하게


3️⃣ 점진적 분리 전략

초기:

  • single instance + schema

중기:

  • read replica 분리

후기:

  • DB per service

👉 “탈출 전략” 반드시 설계해야 함


4️⃣ 이벤트 기반으로 전환

  • DB join 대신
  • Kafka / 이벤트 사용
OrderCreated → PaymentService consume
 

👉 DB 의존 제거


5️⃣ 배치 분리

  • 정산 / 통계는 별도 DB or replica

👉 운영 안정성 핵심 포인트


📌 결론

PostgreSQL 단일 인스턴스 + 스키마 분리 전략은
**“MSA의 입문 단계에서만 유효한 타협안”**이다.

하지만 다음을 명확히 인지해야 한다.

  • 장애는 공유된다
  • 성능은 경쟁한다
  • 구조는 쉽게 무너진다

👉 결국 중요한 건 하나다

“나중에 분리할 수 있는 구조인가?”


📌 한줄 정리

👉 스키마 분리는 시작일 뿐, 끝이 아니다 — 탈출 전략 없는 MSA는 모놀리식이다

LIST

데이터베이스 스키마 형상 관리는 백엔드 개발자에게 숙명과도 같습니다. Java 진영의 전통 강자 Flyway와 Node.js/TypeScript 생태계의 혁신 Prisma Migrate는 서로 다른 철학을 가지고 있습니다. 8년 차 개발자의 시선으로 두 도구의 차이점과 장단점을 분석해 봅니다.


1. 철학의 차이: SQL 중심 vs 모델 중심

가장 큰 차이는 **'무엇을 기준으로 스키마를 정의하느냐'**에 있습니다.

  • Flyway (Versioned Migration): "SQL이 곧 진리다." 개발자가 직접 V1__create_table.sql 같은 순수 SQL 파일을 작성합니다. DB 상태를 코드(SQL)의 실행 순서로 관리하는 방식입니다.
  • Prisma (Declarative Migration): "데이터 모델이 곧 진리다." 개발자는 schema.prisma라는 선언적 파일에 엔티티 구조를 정의합니다. Prisma 엔진이 현재 DB 상태와 모델의 차이(Diff)를 분석해 마이그레이션 파일을 자동으로 생성합니다.

2. 장단점 비교

비교 항목 Flyway (SQL 기반) Prisma (모델 기반)
제어권 매우 높음. DB 전용 문법이나 복잡한 인덱스 설정을 100% 활용 가능. 보통. 대부분 지원하지만, 매우 특수한 DB 기능은 직접 SQL을 수정해야 함.
생산성 낮음. 테이블 변경 시마다 SQL을 직접 짜고 오타를 체크해야 함. 매우 높음. 필드 추가 후 명령어 하나면 SQL 파일이 자동 생성됨.
학습 곡선 낮음. SQL만 알면 바로 사용 가능. 보통. Prisma 고유의 DSL(Domain Specific Language) 학습 필요.
안정성 인간의 실수(오타, 순서 누락) 가능성이 존재함. 모델 기반 자동 생성으로 휴먼 에러가 현격히 줄어듦.
타입 지원 별도의 라이브러리 없이는 DB와 코드 간 타입 동기화가 어려움. 최강. 스키마 변경 시 클라이언트 타입 정의가 실시간 업데이트됨.

3. 어떤 상황에 무엇을 써야 할까?

Flyway를 추천하는 경우

  • 복잡한 레거시 DB: 이미 수백 개의 테이블이 있고, 세밀한 SQL 튜닝이 필수적인 경우.
  • 다국어/다양한 스택: 한 프로젝트에서 Java, Go, Python 등 여러 언어가 동일한 DB를 바라볼 때(Flyway는 독립적인 실행이 용이함).
  • DBA 중심 환경: DBA가 직접 SQL 스크립트를 검수하고 승인하는 프로세스가 엄격한 조직.

Prisma를 추천하는 경우

  • TypeScript 기반 프로젝트: 타입 안정성(Type Safety)이 프로젝트의 핵심 가치일 때.
  • 빠른 이터레이션: 스타트업이나 신규 프로젝트처럼 스키마 변경이 빈번하게 일어날 때.
  • 객체 지향적 개발: SQL의 세부 사항보다는 비즈니스 로직과 데이터 모델링에 더 집중하고 싶을 때.

4. 결론: 도구는 목적을 위한 수단일 뿐

Flyway는 **"내가 명시한 대로만 움직여라"**라는 통제 중심의 도구이며, Prisma는 **"내가 원하는 결과(모델)를 만들어줘"**라는 결과 중심의 도구입니다. 

LIST

1. Monolith (모놀리식 아키텍처)

개념

모든 기능이 하나의 애플리케이션으로 통합되어 배포되는 구조입니다.

[ Client ]


┌─────────────────────┐
│ Monolith App │
│ │
│ Controller │
│ Service │
│ Repository │
│ Domain │
│ │
└─────────────────────┘


DB
 

  • Spring Boot 하나
  • WAR 하나
  • DB 하나

2. MSA (Microservice Architecture)

개념

시스템을 여러 개의 독립 서비스로 분리하여 운영하는 구조

Client


API Gateway

├───────────────┐
▼ ▼
Order Service User Service
│ │
▼ ▼
Order DB User DB
 

서비스

  • 독립 배포
  • 독립 DB
  • 독립

핵심 차이

항목                                                    Monolith                                                        MSA
배포 하나 서비스별
코드 구조 하나의 프로젝트 여러 프로젝트
DB 하나 서비스별
통신 내부 메서드 호출 REST / Message
장애 영향 전체 영향 부분 영향
확장 전체 확장 서비스별 확장

Monolith 장점

1. 단순한 구조

설계가 단순합니다.

Controller → Service → Repository
 

이게 끝입니다.


2. 트랜잭션 관리 쉬움

하나의 DB

@Transactional
 

으로 해결됩니다.


3. 개발 속도 빠름

  • 작은
  • 스타트업
  • MVP

에서 가장 빠릅니다.


4. 운영 비용 낮음

  • 서버 적음
  • 네트워크 없음
  • 메시지 브로커 없음

Monolith 단점

1. 시스템 커지면 유지보수 어려움

대표적인 문제

God Service
Huge Repository
Massive Build Time
 

2. 배포 리스크

작은 수정도

전체 시스템 재배포
 

3. 기술 스택 제한

전체 Java
 

다른 언어 사용 어려움.


MSA 장점

1. 독립 배포

Order Service만 배포
 

가능합니다.


2. 서비스별 확장

검색 서비스 → 트래픽 많음
검색 서비스만 scale
 

3. 조직에 맞음

팀 A → 주문
팀 B → 결제
팀 C → 검색
 

4. 기술 다양성

검색 → Go
AI → Python
Core → Java
 

MSA 단점

1. 운영 복잡도

필요한

Service Discovery
API Gateway
Monitoring
Tracing
Logging
 

대표 도구

  • Kubernetes
  • Prometheus
  • Jaeger
  • ELK

2. 데이터 일관성 문제

모놀리식

ACID Transaction
 

MSA

Eventual Consistency
Saga Pattern
 

3. 네트워크 비용

서비스 통신

REST
gRPC
Kafka
 

latency 증가


4. 분산 시스템 문제

대표 문제

Timeout
Retry
Circuit Breaker
Partial Failure
 

언제 Monolith좋은가

조건

팀 < 10명
서비스 초기
도메인 단순
 

대표 사례

  • 스타트업 MVP
  • 내부 시스템

언제 MSA좋은가

조건

팀 > 30명
서비스 규모 큼
도메인 복잡
트래픽 많음
 

대표 사례

  • Netflix
  • Amazon
  • Uber

현실적인 아키텍처

요즘은 대부분

Modular Monolith

입니다.

Monolith
├ Order Module
├ Payment Module
├ User Module
 

장점

  • 모놀리식 장점 유지
  • MSA확장 가능

유명한

Martin Fowler

"Most people should start with a monolith and evolve to microservices."


실제 회사 아키텍처

대부분

초기 → Monolith
성장 → Modular Monolith
대규모 → MSA

 

LIST

삼성SDS, LG CNS, SK AX(구 SK C&C)는 한국 SI 시장의 핵심 플레이어로, 각각 사업포트폴리오와 시장 전략에 차별점이 있다. 삼성SDS는 IT서비스(6.54조원)와 물류(7.39조원) 부문으로 매출을 양분하며, 2025년 기준 IT서비스가 약 47%를 차지한다. LG CNS는 AI·클라우드(3.587조), 스마트엔지니어링(1.193조), 디지털비즈니스(1.349조) 등 신성장동력 중심으로 재편하여 AI·클라우드 매출 비중이 60% 이상을 기록한다. SK AX는 2024년 매출 2조6059억원, 영업이익 1514억원을 달성하며 디지털 ITS(Factory·금융 DX) 사업이 성장 동력이다. 세 기업 모두 ‘AX(Artificial Intelligence Transformation)’를 핵심 전략으로 내세워 AI 기반 솔루션과 클라우드·DX 역량을 강화 중이다. 이하 각 사별 사업구조·생태계·협력·경쟁·전략·AX 전략을 자세히 비교분석한다.

삼성SDS

  • 사업구조 및 매출비중: 삼성SDS는 크게 IT서비스와 물류 부문으로 구분된다. 2025년 연결기준 매출 13조9299억원 중 IT서비스 6조5435억원(약47%), 물류 7조3864억원(약53%)을 차지한다. IT서비스는 삼성전자·계열사 등 내부거래가 많으나, 최근에는 금융·제조·유통 등 외부 고객으로 범위를 확대하고 있다. 물류 부문은 삼성SDS Logistics가 글로벌 물류 서비스(선박 운송·디지털 물류 플랫폼)를 담당한다.
  • 사업포트폴리오: IT서비스 부문에서는 ERP/MES 등 전통적 SI 사업과 함께 클라우드 전환, AI/빅데이터, 데이터센터(SPC), 보안 솔루션 등이 주요 포트폴리오다. 물류 부문은 글로벌 선박 물류와 콜드체인(냉장), 항공화물 관리 등이 포함된다.
  • 주요 고객군: 삼성전자를 포함한 삼성 계열사와 금융, 제조, 유통, 공공기관 등이 주요 고객이다. 삼성그룹 내부 매출 비중은 과거 70~80% 수준으로 알려졌으나, 최근 외부 거래 비중을 늘리는 중이다.
  • SI 생태계: 삼성SDS는 AWS, 마이크로소프트(Azure) 등 글로벌 클라우드 벤더와 전략적 파트너십을 맺고 있다. 예컨대 AWS Competency를 취득하고 MS와 Azure 기반 공동연구소를 설립하는 등 클라우드·AI 전환 역량을 강화했다. 또한 SAP·Oracle·IBM 등 주요 IT 벤더와 협업하여 SI 프로젝트를 수행한다. 하도급 체계에서는 1차 SI 파트너(대형 SI·컨설팅사)→2차·3차 중소 SI·전문업체로 이어지는 다단계 협력구조를 갖추고 있다. 주요 프로젝트 사례로는 삼성전자 삼성바이오 및 시스템 등 삼성 그룹사 ERP/클라우드 전환, 금융사 디지털 뱅킹 인프라 구축, 제조업 IoT 기반 스마트팩토리 등이 있다.
  • 협력사·경쟁구도: 삼성SDS의 핵심 협력사는 AWS, MS Azure, SAP, Oracle 등 글로벌 IT 플랫폼 제공자와 삼성전자를 포함한 그룹사다. 또한 현대오토에버·KT DS 등 국내 대형 SI·플랫폼 기업과는 프로젝트 협력 관계를 맺는다. 주요 경쟁사로는 LG CNS, SK AX를 비롯해 현대오토에버·KT DS·포스코ICT 등 국내 1,2티어 SI와, IBM·액센츄어 등 글로벌 IT서비스 기업이 있다. (아래 비교표 참조) 삼성SDS는 AI·클라우드·보안에서 강점이 있으며, 물류 역량과 내부 삼성 계열사 기반으로 차별화한다. 약점은 기존 레거시 SI 매출 의존도가 높다는 점이며, 이를 AI·DX 전환으로 극복하려 한다.
구분              삼성 SDS                                                              LG CNS                                   SK AX
클라우드 벤더 AWS, Microsoft Azure, SAP, Oracle AWS, Google Cloud, SAP, IBM SKT, SK브로드밴드 (협업 인프라)
주요 협력사 삼성전자·삼성그룹, AWS, MS, SAP, Oracle, 현대오토에버 등 LG그룹, SAP, AWS, Google, IBM, 한화시스템 등 SK그룹(통신·미디어 계열), IBM, AWS
경쟁사 LG CNS, SK AX, 현대오토에버, KT DS, 포스코ICT, IBM, Accenture 삼성SDS, SK AX, 현대오토에버, KT DS, 포스코ICT, IBM 삼성SDS, LG CNS, 현대오토에버, KT DS, 포스코ICT
사업영역 IT서비스(SI·클라우드·AI·보안), 글로벌 물류서비스 IT서비스(SI·AI·클라우드·스마트팩토리), DX컨설팅 IT서비스(SI·디지털전환·AI), 플랫폼/데이터센터, 통신 솔루션
 

LG CNS

  • 사업구조 및 매출비중: LG CNS는 전통적인 SI(디지털비즈니스서비스) 사업과 함께 AI·클라우드, 스마트엔지니어링(제조·인프라) 사업을 주요 축으로 한다. 2025년 연결기준 매출은 6조1295억원으로, AI·클라우드 3조5872억원(58.5%), 스마트엔지니어링 1조1935억원(19.5%), 디지털비즈니스서비스 1조3488억원(22.0%)이다. 매출의 절반 이상이 AI·클라우드 관련 부문에서 나오며, 매년 높은 성장률을 기록 중이다.
  • 사업포트폴리오: 디지털비즈니스서비스(전사적자원관리 ERP, 데이터센터 운영 등 전통 SI)와 스마트엔지니어링(산업자동화·제조ICT) 사업 외에, AI·클라우드 서비스(AI컨설팅, 클라우드 전환, 데이터 분석) 부문을 확대해 왔다. 자회사 구글 클라우드와 AWS의 생성형 AI 컴피턴시를 확보하는 등 AI 플랫폼 역량을 강조한다. 주요 고객은 금융·제조·공공·통신·유통업체 등으로, LG그룹 계열사뿐 아니라 외부 비계열 고객 비중을 늘리는 추세다.
  • SI 생태계: LG CNS는 AWS, Google Cloud 등 멀티클라우드 파트너 프로그램에 적극 참여하며, SAP·MS·Oracle 등 글로벌 SW 벤더와 긴밀히 협력한다. 예를 들어 AWS 파트너 서밋에서 ‘Services Partner of the Year’를 수상했을 정도로 클라우드 전문성을 인정받았다. 국내외 수많은 중소·중견 SI 기업과 파트너 관계를 맺고, 다양한 산업별 기술 협력 생태계를 구축한다. 대표 프로젝트로는 국내 대형 금융사 클라우드 ERP 전환, 제조업체 스마트팩토리 구축, 공공기관 보안 AI 솔루션 등이 있다.
  • 협력사·경쟁구도: 핵심 협력사는 SAP(ERP솔루션), AWS·Google Cloud(클라우드) 등이며, LG그룹사 및 국내외 파트너와의 공동 프로젝트도 활발하다. 예컨대 LG CNS는 AWS·구글과 함께 생성형 AI 서비스를 내놓고 있으며, SAP 사파이어 행사에 참여하는 등 글로벌 협력도 강화했다. 경쟁사는 삼성SDS, SK AX를 포함한 국내 대형 SI뿐 아니라 현대오토에버·KT DS 등이다. 최근에는 ‘챗GPT 엔터프라이즈’를 둘러싼 AI 시장에서 SDS와 경쟁하고 있다. LG CNS는 **Agentic AI(에이전틱 AI) 플랫폼 ‘에이전틱웍스’**와 로봇·휴머노이드 기술(Physical AI) 등에 집중하며, 이를 AX(AI Transformation) 전문기술로 선포하고 있다. 장점은 제조·통신 등 다양한 도메인 노하우와 강력한 클라우드·AI 역량, 단점은 상대적으로 탄탄한 재무구조의 삼성SDS 대비 빠른 글로벌 확장이 미약하다는 점이다.
사업부문                                                                                                  2025 매출액(억원)매출          비중 
AI·클라우드 35,872 58.5%
스마트엔지니어링 11,935 19.5%
디지털비즈니스 13,488 22.0%
합계 61,295 100%
 

SK AX (구 SK C&C)

  • 사업구조 및 매출비중: SK AX는 SK그룹 IT서비스 부문으로서, *디지털 ITS(산업·금융 전환)*와 AI 솔루션을 주력으로 한다. 2024년 별도기준 매출액은 2조6059억원, 영업이익은 1514억원으로 전년 대비 매출 +8.0%, 영업이익 +24.3%를 기록했다. 2025년 6월부터 사명을 SK AX로 변경하며 AI 중심 사업 강화 의지를 밝혔다. 구체적 부문별 매출 비중은 공개되지 않았으나, 디지털 팩토리(제조)와 금융 DX 부문의 성장세가 두드러진다.
  • 사업포트폴리오: 전통적인 시스템통합(SI)·아웃소싱 사업 외에도 AI 기반 클라우드 전환, AI MSP(AI 관리 서비스), 빅데이터·보안 플랫폼 등으로 포트폴리오를 재편 중이다. SK텔레콤·SK브로드밴드 등 그룹 시너지로 AI 데이터센터(AIDC)를 구축하고 있으며, ERP·그룹 내 시스템 관제, SKT·SK하이닉스 등 대기업 전산망 운영이 주요 사업이다.
  • 주요 고객군: SK텔레콤, SK하이닉스, SK E&S 등 SK그룹사를 비롯해 금융·제조·통신·서비스 기업이 고객이다. 특히 AI 및 통신 연관 사업에서 그룹사를 통한 내수 기반이 강력하다.
  • SI 생태계: SK AX는 그룹 내 SKT, SK Broadband 등과 협력해 AI 인프라를 공유하고, 국내외 AI 스타트업 및 연구기관과의 협업도 진행한다. 대표적으로 판교 데이터센터를 SK Broadband에 매각한 뒤 이를 기반으로 SKT와 함께 차세대 AI 데이터센터를 짓기로 했다. AI 컨설팅·플랫폼 사업에서는 SK텔레콤 AI 플랫폼, 외부 협력사(OpenAI 등)와의 연계를 추진한다. 주요 프로젝트는 SKT 5G 인프라 최적화, SK하이닉스 반도체 생산시설 AI화, 금융사 챗봇 도입 등이다.
  • 협력사·경쟁구도: SK AX의 핵심 협력사는 SK텔레콤·SK Broadband 등 그룹 통신사, AWS·MS Azure 같은 클라우드 벤더, IBM·SAP 등의 SW 벤더다. 지난해 OpenAI 챗GPT 리셀러 파트너 계약을 체결하고 SKT와 통신 연계 AI 사업을 확대했다. 경쟁사로는 삼성SDS, LG CNS, 현대오토에버, KT DS 등이 있으며, 글로벌 SI로는 액센츄어, IBM 등이 있다. SK AX는 SK그룹의 방대한 고객 풀과 통신 인프라가 강점이며, 약점으로는 삼성SDS·LG CNS 대비 독립적인 시장 인지도가 상대적으로 낮은 점이 지적된다. 사명 변경과 AI 인프라 집중 등으로 브랜드 재정비를 추진 중이다.
구분2024년 실적(억원)YoY 변화
매출액 26,059 +8.0%
영업이익 1,514 +24.3%
 

SI 생태계 다이어그램

mermaid
복사
graph LR
  subgraph 통합 SI(1차)
    SDS[삼성SDS]
    LGCNS[LG CNS]
    SKAX[SK AX]
  end
  subgraph 플랫폼·클라우드
    AWS[AWS]
    AZ[Azure]
    GCP[Google Cloud]
    SAP[SAP]
    ORA[Oracle]
    IBM[IBM]
  end
  subgraph 1차협력사
    P1[대형SI사들]
    P2[전문컨설팅·SI]
  end
  subgraph 2차협력사
    P1A[중견SI]
    P1B[중견SI]
  end
  SDS -->|협력| AWS & AZ & SAP
  SDS -->|협력| 삼성전자
  LGCNS -->|협력| AWS & GCP & SAP
  LGCNS -->|협력| LG그룹
  SKAX -->|협력| SKT & AWS
  SKAX -->|협력| SK그룹
  P1 --> SDS & LGCNS & SKAX
  P1A --> P1
  P1B --> P1
  • 설명: 위 다이어그램은 삼성SDS·LG CNS·SK AX를 상위 통합 SI(1차)로 놓고, AWS/Azure/Google Cloud 등 글로벌 클라우드 업체와 SAP/Oracle/IBM 같은 SW 벤더를 주요 협력사로 표시했다. 각사의 1차 협력사(대형 SI·컨설팅사)와 2차 협력사(중견·중소 SI)가 아래 계층을 구성한다. 예컨대 SDS는 삼성전자 등 그룹사와 AWS·MS·SAP와 협업하고, LG CNS는 AWS·구글·SAP와 협력한다. SK AX는 SK텔레콤·Broadband 등 그룹 통신사 및 클라우드 벤더와 손잡고 있다.

협력사·경쟁사 비교표

구분                  삼성SDS 협력·경쟁사                             LG CNS 협력·경쟁사                           SK AX 협력·경쟁사
클라우드 협력 AWS, Microsoft Azure, Google Cloud
경쟁사: AWS 파트너 SI 전반
AWS, Google Cloud
경쟁사: 구글·AWS 파트너 SI
SK텔레콤·SK브로드밴드 인프라 협력, Azure 경쟁사: 없음(주로 내부 활용)
SW 협력 SAP, Oracle, IBM SAP, Microsoft, IBM IBM, SAP(그룹사 중심)
SI 파트너 현대오토에버, KT DS, 포스코ICT 등 중견SI 연합 한화시스템, 롯데정보통신, KT DS 등 한화시스템, 포스코ICT, KT DS 등
직접 경쟁사 LG CNS, SK AX, 현대오토에버, KT DS, Accenture, IBM 삼성SDS, SK AX, 현대오토에버, KT DS, Accenture, IBM 삼성SDS, LG CNS, 현대오토에버, KT DS, Accenture
주요 사업영역 IT서비스(클라우드·AI·보안 등), 물류 IT서비스(클라우드·AI), 스마트팩토리, DX컨설팅 IT서비스(디지털전환·AI), 데이터센터, 통신 솔루션
 
  • 설명: 표는 각 사의 주요 협력사(클라우드, SW 벤더, SI 파트너)와 직접 경쟁 관계를 비교한 것이다. 예를 들어 삼성SDS는 AWS/MS/Google 같은 글로벌 클라우드 벤더와 협력하며, 경쟁사로는 LG CNS·SK AX·현대오토에버 등 대형 SI가 있다. LG CNS는 AWS·Google Cloud 등과 협력하며, 삼성SDS와 경쟁한다. SK AX는 SK그룹 내 통신 인프라와의 시너지를 확보하는 한편 삼성SDS·LG CNS와 경쟁한다.

시사점 및 추천

  • AI/클라우드 역량 강화: 세 기업 모두 AX(기업 AI 전환)에 주력하고 있으므로, AI 컨설팅부터 구현·운영까지 엔드투엔드 솔루션 역량을 지속 강화해야 한다. 특히 SDS와 LG는 이미 OpenAI와 파트너십을 맺고 시범 적용을 시작했으므로, 이를 확장해 차별화된 AI 서비스를 발굴할 필요가 있다.
  • 협력 네트워크 확대: 글로벌 클라우드·SW 벤더와의 전략적 협력을 한층 강화해야 한다. 예컨대 SDS는 AWS·MS와의 협력을 통해 클라우드 전환 사업을 확대하고, LG CNS는 SAP·Oracle 협력으로 ERP·DX 시장을 공략하며, SK AX는 SKT·AWS 연계로 AI 인프라를 고도화할 수 있다. 또한 중견·중소 SI, 스타트업과의 파트너십을 체계화해 생태계를 다층화해야 한다.
  • 글로벌·산업 특화 전략: 각 사는 강점을 활용해 해외 진출과 산업 특화로 차별화해야 한다. 예컨대 LG CNS는 ‘제조 AX’ 기술을 중동 등 해외 시장에 적용하고 있으며, SDS는 삼성그룹의 글로벌 네트워크를 활용해 동남아·미주 시장 공략을 추진할 수 있다. SK AX는 SK그룹의 해외 금융·통신 사업 기회를 활용하거나, 한국형 AI 데이터센터 솔루션을 수출해 볼 수 있다.
  • 메타 역량과 서비스 혁신: 로우코드/노코드, 디지털 경험(XP), 챗봇 등 새로운 서비스 모델 개발에 주목해야 한다. 예컨대 LG CNS의 ‘에이전틱 AI’ 플랫폼, SDS의 챗GPT 기반 기업용 솔루션, SK AX의 AI 데이터센터 서비스처럼 고객 경험(CX)·사용자 경험(UX)을 통합하는 플랫폼을 고도화하고 이를 SI 서비스에 통합해야 한다.
  • 산업·정부 협력: 정부의 디지털 뉴딜·AI 정책에 적극 협력하고, 공공·금융 등의 대형 프로젝트에 참여해야 한다. 특히 민·관 협력 R&D(예: 국가 AI 컴퓨팅센터)와 데이터 인프라 사업에 공동투자함으로써, 시장 주도권을 공고히 해야 한다.

각 기업은 자신만의 핵심 역량(삼성SDS의 물류·보안, LG CNS의 제조DX·Agentic AI, SK AX의 통신 인프라·AI 컨설팅)을 기반으로 위 협력·경쟁 전략을 실행해 나갈 수 있다. Merma⁠id 다이어그램과 표를 활용해 경쟁·협력관계를 시각화함으로써, SI 시장에서의 입지를 명확히 하는 것이 중요하다.

LIST

ETag(Entity Tag)는 HTTP 프로토콜에서 사용되는 헤더로, 웹 리소스의 특정 버전을 식별하는 고유한 식별자입니다.

서버가 클라이언트에게 리소스를 전송할 때 ETag 헤더를 포함시키고, 클라이언트는 이후 요청 시 If-None-Match 헤더에 이 값을 포함하여 조건부 요청을 보낼 수 있습니다.

ETag의 주요 목적은 캐싱 효율성을 높이는 것입니다. 클라이언트가 이미 가지고 있는 리소스와 서버의 현재 버전이 동일한지 확인할 수 있어, 변경되지 않았다면 전체 콘텐츠를 다시 다운로드하지 않고 304 Not Modified 응답을 받습니다. 이를 통해 네트워크 트래픽과 서버 부하를 줄일 수 있습니다.

Last-Modified 헤더와 비슷한 역할을 하지만, 타임스탬프 기반이 아닌 콘텐츠 기반으로 동작합니다. 그렇기 때문에 ETag는 1초 내에 여러 변경이 있거나 시간 기반 비교가 적합하지 않은 상황에서 더 정확한 캐싱을 제공합니다.

ETag 값은 보통 리소스의 내용에 기반한 해시값이나 버전 번호로 생성되며, Strong ETag와 Weak ETag(W/ 접두사 사용) 두 종류로 나뉩니다. Strong ETag는 바이트 단위까지 정확히 일치해야 하고, Weak ETag는 의미적으로 동등하면 일치하는 것으로 간주합니다.

ETag를 Cache-Control 헤더와 함께 사용하기도 하나요? 🤔

ETag와 Cache-Control은 서로 보완적인 관계에 있으며, 함께 사용하면 더 효과적인 캐싱 전략을 구현할 수 있습니다.

Cache-Control은 리소스의 캐싱 정책을 직접적으로 지정하는 헤더로, 캐시 가능 여부, 유효 기간, 재검증 요구사항 등을 설정합니다. 반면 ETag는 리소스의 변경 여부를 확인하는 메커니즘을 제공합니다.

실제 프로젝트에서는 두 헤더를 다음과 같이 조합하여 사용할 수 있습니다.

Cache-Control: max-age=31536000
ETag: "abc123"

정적 리소스(이미지, CSS, JS 등)의 경우, 이와 같이 설정하면 1년간 클라이언트 캐시를 사용하되, 리소스 갱신 시(ex. 배포) ETag가 변경되어 새 버전을 받아갑니다. 파일명에 해시를 포함시키는 방식으로도 구현할 수 있습니다.

Cache-Control: no-cache
ETag: "xyz789"

자주 변경되는 API 응답의 경우, 이처럼 no-cache 설정으로 매번 서버에 재검증을 요청하게 하되, ETag를 통해 콘텐츠가 변경되지 않았다면 304 응답으로 데이터 전송을 줄일 수 있습니다

LIST
예외 종류에 따른 트랜잭션 롤백은 개발 환경에 따라 다르게 동작합니다.

Spring 트랜잭션 예외 처리 동작

  • Checked Exception 기본적으로 Checked Exception이 발생하더라도 트랜잭션을 롤백하지 않습니다. Checked Exception은 컴파일 시점에 예외 처리를 강제하는 예외로, 개발자가 예외 발생 가능성을 예상하고 이를 적절히 처리할 수 있는 정상적인 예외 상황이라고 가정하기 때문입니다.
  • Unchecked Exception(RuntimeException, Error) Spring은 기본적으로 Unchecked Exception 또는 Error가 발생하면 트랜잭션을 롤백합니다. 이는 Unchecked Exception이 보통 프로그래머의 실수나 시스템적인 문제로 인한 회복하기 어려운 상황(NullPointerException, IllegalArgumentException 등) 이라고 가정하기 때문입니다. Spring은 JDBC, JPA, Hibernate 등 하위 데이터 액세스 계층에서 발생하는 다양한 예외를 모두 공통의 Unchecked Exception인 DataAccessException 계층으로 변환하여 처리합니다. 이를 통해 일관된 예외 처리 전략을 수립할 수 있습니다.

기본 동작과 별개로 @Transactional  rollbackFor나 noRollbackFor 속성을 사용하여 특정 Checked Exception에 대해서도 롤백을 유도하거나, 반대로 Unchecked Exception에 대해 롤백하지 않도록 설정할 수 있습니다.

반면, 자바(EE) 환경에서는 컨테이너가 관리하는 트랜잭션(CMT)과 개발자가 직접 관리하는 프로그래밍 방식의 트랜잭션 제어 모두 존재하며, 이들 환경에서는 트랜잭션 롤백 동작이 Spring과는 다르게 동작할 수 있습니다.

  • 컨테이너 관리 트랜잭션(CMT) 환경 (EJB, CDI 등) 기본적으로 Unchecked Exception이 발생하면 컨테이너가 자동으로 트랜잭션을 롤백합니다. Checked Exception은 기본적으로 롤백을 트리거하지 않으며, 필요하면 @ApplicationException(rollback=true) 등의 어노테이션으로 롤백을 강제할 수 있습니다.
  • 프로그램 방식의 트랜잭션 제어 개발자가 트랜잭션의 시작, 커밋, 롤백 등을 직접 관리해야 합니다. 이 경우, 예외가 발생하면 예외 종류와 관계없이 개발자가 상황에 맞게 명시적으로 rollback()을 호출하는 방식으로 트랜잭션을 종료합니다.
    백엔드와 관련된 질문이에요.

    예외 종류에 따른 트랜잭션 롤백은 개발 환경에 따라 다르게 동작합니다.

    Spring 트랜잭션 예외 처리 동작

    • Checked Exception 기본적으로 Checked Exception이 발생하더라도 트랜잭션을 롤백하지 않습니다. Checked Exception은 컴파일 시점에 예외 처리를 강제하는 예외로, 개발자가 예외 발생 가능성을 예상하고 이를 적절히 처리할 수 있는 정상적인 예외 상황이라고 가정하기 때문입니다.
    • Unchecked Exception(RuntimeException, Error) Spring은 기본적으로 Unchecked Exception 또는 Error가 발생하면 트랜잭션을 롤백합니다. 이는 Unchecked Exception이 보통 프로그래머의 실수나 시스템적인 문제로 인한 회복하기 어려운 상황(NullPointerException, IllegalArgumentException 등) 이라고 가정하기 때문입니다. Spring은 JDBC, JPA, Hibernate 등 하위 데이터 액세스 계층에서 발생하는 다양한 예외를 모두 공통의 Unchecked Exception인 DataAccessException 계층으로 변환하여 처리합니다. 이를 통해 일관된 예외 처리 전략을 수립할 수 있습니다.

    기본 동작과 별개로 @Transactional  rollbackFor나 noRollbackFor 속성을 사용하여 특정 Checked Exception에 대해서도 롤백을 유도하거나, 반대로 Unchecked Exception에 대해 롤백하지 않도록 설정할 수 있습니다.

    반면, 자바(EE) 환경에서는 컨테이너가 관리하는 트랜잭션(CMT)과 개발자가 직접 관리하는 프로그래밍 방식의 트랜잭션 제어 모두 존재하며, 이들 환경에서는 트랜잭션 롤백 동작이 Spring과는 다르게 동작할 수 있습니다.

    • 컨테이너 관리 트랜잭션(CMT) 환경 (EJB, CDI 등) 기본적으로 Unchecked Exception이 발생하면 컨테이너가 자동으로 트랜잭션을 롤백합니다. Checked Exception은 기본적으로 롤백을 트리거하지 않으며, 필요하면 @ApplicationException(rollback=true) 등의 어노테이션으로 롤백을 강제할 수 있습니다.
    • 프로그램 방식의 트랜잭션 제어 개발자가 트랜잭션의 시작, 커밋, 롤백 등을 직접 관리해야 합니다. 이 경우, 예외가 발생하면 예외 종류와 관계없이 개발자가 상황에 맞게 명시적으로 rollback()을 호출하는 방식으로 트랜잭션을 종료합니다.
LIST

+ Recent posts