Java는 안정성, 하위 호환성, 성숙한 도구군, 보안 옵션, 그리고 규모에 맞게 구축된 거대한 생태계 덕분에 여전히 기업 환경에서 최우선 선택지로 남아 있다.

Java는 대부분의 기술보다 ‘사망 선고’를 더 자주 받아왔다. 그럼에도 불구하고 은행, 보험사, 소매업, 항공사, 통신사, 정부 기관 내부를 들여다보면 Java는 여전히 광범위하게 사용된다—핵심 트랜잭션 시스템, 통합 계층, 내부 플랫폼, 그리고 대량 트래픽을 처리하는 고객 서비스까지. 유행과 대규모 배포 사이의 그 간극이 바로 이 질문이 계속 다시 제기되는 이유다: 왜 Java는 25년이 넘도록 대기업에서 이렇게 널리 쓰이는가?
이건 단순히 ‘큰 회사’가 아니다. 소프트웨어 관점에서 대기업은 보통 다음을 뜻한다:
이런 환경에서 언어를 선택하는 것은 이번 분기의 개발 생산성만의 문제가 아니다. 향후 10년을 지원 가능하고 테스트 가능하며 거버넌스 가능한 기술을 선택하는 문제다.
사람들이 이 질문을 할 때 보통 몇 가지 실용적 요인들을 둘러본다: 안정성과 하위 호환성, JVM 생태계의 깊이, 성숙한 도구와 테스트 관행, 풍부한 인재 풀, 그리고 검증된 접근을 선호하는 위험 관리다.
이 글은 Java가 모든 상황에서 ‘최고’라고 주장하려는 것이 아니다. 대신 특정 유형의 엔터프라이즈 작업에서 Java가 계속 기본 선택으로 남는 이유와, 제약이나 팀 역량, 구축하려는 시스템 유형에 따라 다른 언어가 더 적합할 수 있는 경우를 설명하려는 것이다.
대기업은 소프트웨어를 매년 교체하는 식으로 다루지 않는다. 많은 핵심 시스템은 10~20년 동안 운영되고 진화할 것으로 기대된다. 이 시간적 관점은 ‘관련성’의 의미를 바꾼다: 최신 문법이 아니라 비즈니스, 규제, 인프라가 변하더라도 안전하게 기능을 계속 제공하는 능력이다.
엔터프라이즈 애플리케이션은 일반적으로 청구, 물류, 아이덴티티, 리스크, 고객 데이터의 중심에 놓인다. 이를 대체하는 작업은 깨끗한 새로 시작하는 프로젝트가 아니라 병행 운영, 데이터 조정, 계약적 의무가 뒤따르는 다년간의 마이그레이션인 경우가 많다. 재작성은 단순한 엔지니어링 작업이 아니라 운영적 혼란을 수반한다.
플랫폼이 명확한 업그레이드 경로, 안정적 의미론, 장기 지원 옵션을 제공하면 팀은 변경을 ‘빅뱅’ 대신 관리 가능한 단계들의 연속으로 계획할 수 있다. 그 예측 가능성은 다음을 줄여준다:
조달, 감사, 내부 거버넌스는 중요하다. 엔터프라이즈는 보통 문서화된 지원 수명주기, 보안 패치 프로세스, 벤더 책임, 반복 가능한 배포 통제를 요구한다. 표준이 확립되고 지원 옵션이 성숙한 런타임/언어가 빠르게 변하는 툴체인보다 그런 요구에 자연스럽게 맞는다.
엔터프라이즈 환경에서 관련성은 다음과 같은 측정 가능한 결과로 나타난다:
Java가 흔한 이유는 기업들이 새 언어를 무시해서가 아니라, 변화 비용이 크고 예측 가능하며 통제 가능한 진행이 종종 더 우세한 전략이기 때문이다.
엔터프라이즈는 Java가 유행해서 선택하지 않는다. 오랜 기간, 여러 팀, 엄격한 변경 통제 아래 소프트웨어가 돌아가야 할 때 예측 가능성을 제공하기 때문에 선택한다.
백워드 호환성은 업그레이드 시 기존 코드가 거의 같은 방식으로 계속 동작할 가능성이 높다는 뜻이다. 플랫폼이 발전했다고 해서 애플리케이션의 큰 부분을 다시 써야 하지 않는다.
이건 단순해 보이지만 비즈니스에는 큰 영향을 준다. 핵심 청구·물류·리스크 시스템이 업그레이드 후에 깨지면 비용은 단순한 개발 시간만이 아니라 다운타임, 릴리스 지연, 규정 문제로 이어질 수 있다.
Java의 런타임(JVM)과 표준 API는 신중하게 변화한다. 기능은 추가되지만 점진적으로 사용 중단(deprecate)되고 마이그레이션 경로가 명확하다. 이 안정성은 엔터프라이즈가 업그레이드를 긴급 프로젝트가 아닌 정기 유지보수로 계획할 수 있게 해준다.
또한 내부 프레임워크, 통합, 운영 툴링 등 수년에 걸쳐 쌓아온 투자가 하루아침에 무용지물이 되지 않도록 보호한다.
안정적인 플랫폼은 점진적 모던화에 적합하다:
이는 많은 변경이 동시에 일어나 무엇이 깨졌는지 추적하기 어려운 ‘빅뱅’과 비교해 위험을 줄여준다.
일반적인 패턴은 신뢰할 수 있는 Java 코어(시스템 오브 레코드)는 유지하면서 엣지(새 API, UI 레이어, 이벤트 스트리밍, 마이크로서비스)를 현대화하는 것이다. 핵심을 도박 걸지 않고도 혁신을 적용할 수 있다.
Java의 지속성은 단순한 언어 문법 때문이 아니다. JVM과 수십 년간 업계에서 검증된 생태계가 함께 제공하는 신뢰성 때문이다.
JVM은 동일한 바이트코드가 운영체제와 하드웨어를 가로질러 일관된 동작을 하게 하는 신뢰 가능한 런타임 계약을 제공한다. 온프레미스 서버, 다양한 리눅스 배포판, 여러 클라우드 환경이 섞여 있을 때 이 이식성은 중요하다. 또한 런타임이 잘 규격화되어 있어 “내 머신에서는 돌아가는데” 문제를 줄여준다.
중요한 점은 JVM이 단일 언어가 아니라 플랫폼이라는 것이다. 팀은 필요에 따라 Kotlin, Scala, Groovy 등을 혼합해 쓰면서도 패키징·모니터링·운영 모델을 통일할 수 있다.
대기업은 반복적으로 유사한 문제를 해결한다: API 구축, DB·메시징 통합, 서비스 보안, 작업 스케줄링, 문서 생성, 관측성 처리 등. JVM 생태계는 거의 모든 이러한 필요에 대해 성숙한 옵션을 제공해 평가 주기를 단축시키고 커스텀 플러밍을 피하게 한다.
이 도구들은 프로덕션에서 오랜 기간 사용되어 왔기 때문에 엣지 케이스가 알려져 있고 문서화되어 있으며 안정 릴리스에서 이미 해결된 경우가 많다.
새벽 2시에 뭔가 고장 났을 때 성숙성은 곧 시간 절약이다. 과거 사례—가이드, 런북, 사후분석, 트러블슈팅 스레드—가 풍부해 엔지니어가 검증된 해결책을 빠르게 찾을 수 있다.
이런 폭넓은 지식은 사고 해결 시간도 단축시킨다: 불확실성이 줄고 진단이 명확해져 업타임에 비용이 매겨지는 기업 환경에서 큰 장점이 된다.
엔터프라이즈는 단지 언어를 고르는 것이 아니라 운영 모델을 선택한다. Java의 장기는 대규모 장기 코드베이스를 안전하게 변경할 수 있게 하는 성숙한 도구와 습관에 둘러싸여 있다는 점이다.
대부분의 Java 팀은 코드에 깊게 통합된 풍부한 IDE를 사용한다: 수천 개 파일을 즉시 탐색하고 안전한 리팩터링을 제안하며 문제를 조기에 발견한다. 성능 문제가 실제 워크로드에서만 나타날 때도 디버거와 프로파일러는 어디에서 시간이나 메모리가 쓰이는지 정확히 파악하게 해준다—이는 실무에서 매우 중요하다.
대기업은 반복 가능한 빌드에 의존한다: 같은 프로젝트가 로컬, CI, 프로덕션에서 동일하게 컴파일되어야 한다. Java의 주류 빌드 도구와 의존성 관행은 수많은 서비스와 팀에 걸쳐 버전 일관성을 유지하는 것을 더 쉽게 해준다. 그 결과 ‘내 환경에서는 되는데’ 같은 문제와 라이브러리 패치 시 업그레이드 장애가 줄어든다.
Java 생태계는 계층화된 테스트를 장려한다: 일상 작업을 위한 빠른 단위 테스트, 서비스 경계를 위한 통합 테스트, 핵심 흐름을 위한 종단간 검사. 시간이 지나면서 이것은 조직적 안전망이 되어 팀이 리팩터링하고 현대화할 때 더 큰 신뢰를 갖고 변경할 수 있게 한다.
프로덕션에서 무슨 일이 일어나는지 이해하는 능력은 기능만큼 중요하다. Java 팀은 보통 로깅, 메트릭, 진단을 표준화해 사고를 일관되고 빠르게 조사할 수 있게 한다. 수백 개 서비스가 연관될 때 이런 공유 관행은 짧은 중단과 긴 중단을 가르는 차이가 된다.
엔터프라이즈 시스템은 이론적 최고 속도를 좇아 이기지 않는다. 혼잡하고 혼합된 워크로드(월말 스파이크, noisy neighbor, 다양한 데이터 형태, 장기간 가동)에서 예측 가능하게 빠른 것이 중요하다. Java의 가장 큰 성능 이점은 일관성이다: 서비스가 웜업된 후 안정적으로 최적화되는 경향이 있어 팀은 용량을 계획하고 SLO를 설정하며 트래픽 변화에 따른 깜짝 퇴보를 피할 수 있다.
가끔은 엄청 빠르지만 잦은 변동성을 보이는 런타임은 운영 부담을 만든다: 더 많은 오버프로비저닝, 더 긴 사고 대응 시간, 변경에 대한 낮은 신뢰. Java의 런타임 최적화(JIT 컴파일, 적응형 프로파일링)는 서비스가 웜업되면 꾸준한 결과를 내주는 경향이 있어 대부분의 엔터프라이즈 서비스가 연속해서 운영되는 방식과 맞아떨어진다.
Java는 여러 확장 스타일에서 오랜 실적을 가지고 있다:
엔터프라이즈는 보통 한 가지 패턴만 쓰지 않고 모두 섞어 쓰기 때문에 이런 폭넓은 지원이 중요하다.
오늘날 JVM은 ‘핫’ 코드 경로를 공격적으로 최적화하고 다양한 필요에 맞춘 가비지 컬렉터를 제공한다—저지연이 필요한 인터랙티브 서비스용 또는 배치용 고처리량 프로파일 등. 보통은 워크로드에 맞는 GC와 튜닝 프로필을 선택하지 코드를 다시 쓰지는 않는다.
성능 논의는 결과와 연결될 때 실무적이 된다:
측정 우선 접근법에서 Java는 빛난다: 성능은 관측 가능하고, 튜닝 가능하며, 잘 알려져 있어 팀이 안전하게 반복할 수 있다.
대기업은 단지 ‘안전한 소프트웨어’가 아니라 수년간 예측 가능한 보안을 필요로 한다. 그래서 Java의 LTS 옵션과 보안 업데이트 스트림이 중요하다. LTS 릴리스로 조직은 특정 버전 표준화, 주기적 패치 적용, 감사 주기와 변경 관리 프로세스에 맞춘 업그레이드 계획을 세울 수 있다.
엔터프라이즈 시스템의 보안은 단일 기능이 아니라 거의 모든 프로젝트에 등장하는 여러 요구사항이다:
Java 생태계는 널리 채택된 라이브러리, 프레임워크, 표준 기반 통합으로 이러한 요구를 지원한다. 그 결과 규정 준수 기대를 충족시키기 쉬운데, 확립된 통제, 반복 가능한 구성 패턴, 잘 알려진 운영 관행을 제시할 수 있기 때문이다.
취약점이 발견되면 성숙한 생태계는 권고문, 패치 버전, 의존성 업데이트, 영향을 찾고 수정하는 도구 같은 명확한 대응 경로를 제공한다. 많은 엔터프라이즈에게 이 ‘워크플로 준비성’은 단순한 패치 이상으로 중요하다—감사팀, 규제기관에 대한 조치 문서화가 필요하기 때문이다.
Java는 보안을 거버넌스하기 쉽게 만들 수 있지만 안전한 결과를 자동으로 보장하진 않는다. 패치 규율, 의존성 관리, 비밀 관리, 안전한 구성, 모니터링 등은 여전히 애플리케이션 보안 여부를 결정한다. Java의 장점은 이러한 관행들이 대규모 조직에서 잘 지원되고 친숙하다는 점이다.
엔터프라이즈는 단지 언어를 선택하는 것이 아니라 노동 시장을 선택한다. Java가 오랫동안 대학, 부트캠프, 기업 교육에 자리했기 때문에 지역 전반에서 프로젝트를 채용할 수 있다—희귀한 스킬에 베팅할 필요가 줄어든다.
Java 개발자는 모든 수준의 시니어리티에서 대부분의 주요 도시에 존재해 팀 확장 시 채용 변동성이 덜하다. 1명의 스페셜리스트가 아닌 10~50명의 엔지니어를 연간 추가해야 할 때 이 점은 중요하다.
Java가 널리 가르쳐지고 문서화되어 있기 때문에 인접한 배경(C#, Kotlin, 심지어 Python)에서 온 우수한 엔지니어도 니치 생태계보다 빠르게 생산성을 낼 수 있다.
대규모 조직은 사람을 제품 간에 교체하거나 인수 후 팀을 통합하고 작업을 위치 간에 이동시킨다. Java라면 신규 입사자가 기본을 이미 알고 있는 경우가 많아 온보딩은 도메인과 시스템에 집중될 수 있으며, 문법과 도구를 처음부터 가르치는 데 드는 시간을 절약한다.
이는 핵심 인물 의존 위험도 낮춘다. 많은 사람이 코드를 읽고 유지보수할 수 있을 때 휴가, 이직, 재구성에도 배달이 멈추지 않는다.
큰 인재 풀은 아웃소싱, 감리, 단기 컨설팅 옵션을 넓힌다—특히 규제 프로젝트에서 외부 리뷰가 필요할 때 유용하다.
Java는 다팀 구조에도 잘 맞는다: 관례가 성숙하고 프레임워크가 표준화되어 있어 공유 라이브러리와 플랫폼 팀이 여러 제품 팀을 병렬로 지원하기 쉽다.
컨테이너가 등장해도 Java가 ‘구식’이 된 것은 아니다—다만 몇 가지 실용적 조정이 필요했다. 오늘날 많은 엔터프라이즈는 Java 워크로드를 Kubernetes와 관리형 컨테이너 플랫폼에서 운영하는데, 이는 패키징된 서비스, 반복 가능한 배포, 명확한 리소스 제한 같은 운영 모델이 Java 시스템을 구축하고 거버넌스하는 방식과 잘 맞기 때문이다.
전형적인 패턴은 자체 포함형 서비스(종종 Spring Boot, Quarkus, Micronaut)를 작고 안정된 컨테이너 이미지로 패키징해 헬스체크, 오토스케일, 블루/그린 또는 카나리 릴리스로 배포하는 것이다. JVM은 컨테이너를 인지하므로 예측 가능한 메모리 동작을 설정하고 오케스트레이션 하에서 서비스를 안정적으로 유지할 수 있다.
Java는 다음에 자주 사용된다:
JVM 생태계는 메트릭, 트레이싱, 구조화된 로깅을 강력히 지원해 Java 서비스가 기존 플랫폼 도구에 거의 마찰 없이 통합되기 쉬운 편이다.
엔터프라이즈는 핵심 시스템을 한 번에 교체하기보다는 보통 검증된 Java 코어(청구, 아이덴티티, 이행)를 유지하면서 주변을 현대화한다: 서비스 추출, API 레이어 추가, 컨테이너로 배포 이동 등. 이렇게 하면 핵심 비즈니스 로직을 지키면서 인프라와 전달 방식을 현대화할 수 있다.
-XX:MaxRAMPercentage) 설정과 힙 크기 조정\n- 구성 복잡성: 환경이 늘어나기 전에 구성과 시크릿 관리를 표준화할 것대기업은 거의 한 언어만 쓰지 않는다. 하나의 비즈니스 프로세스가 모바일 앱, .NET 서비스, Python 데이터 파이프라인, 벤더 SaaS, 수십 년 된 메인프레임을 건널 수 있다. 그런 현실에서 가장 가치 있는 시스템은 모든 것을 강제로 같은 기술로 통일하지 않고도 신뢰성 있게 연결하는 시스템이다.
대부분의 크로스팀·크로스벤더 통합은 몇 가지 반복 가능한 접점으로 귀결된다:
JVM 생태계는 거의 모든 엔터프라이즈 통합 패턴에 대한 성숙한 드라이버, 클라이언트, 라이브러리를 가지고 있어 이런 이음새에 잘 들어맞는다.
엔터프라이즈는 종종 API 게이트웨이, 통합 서비스, 내부 SDK, 워크플로 엔진 같은 공유 플랫폼에 Java를 선택한다. Java는 환경 전반에서 예측 가능하게 동작하고 표준을 잘 지원하기 때문에 그렇다. Java ‘글루’ 서비스는 현대 팀에 깔끔한 API를 노출하면서도 백엔드가 필요로 하는 모든 프로토콜을 소화할 수 있다.
이것이 결제, 통신, 물류처럼 통합이 핵심인 도메인에서 Java가 자주 쓰이는 이유이기도 하다: 어려운 부분은 단일 알고리즘이 아니라 많은 시스템을 안전하게 조정하는 것이다.
상호운용성은 열린 계약을 설계할 때 쉬워진다:
Java는 이러한 표준 위에 잘 앉아 아키텍처를 특정 벤더나 런타임에 묶지 않게 해준다.
엔터프라이즈는 스타트업처럼 언어를 선택하지 않는다. 소프트웨어가 청구, 거래, 물류, 아이덴티티 시스템을 운영할 때 목표는 예측 가능한 결과—놀라움과 사고가 적고 예산을 세우기 쉬운—이다. 그런 맥락에서 ‘지루함’은 종종 ‘잘 이해된 것’이라는 의미로 장점이 된다.
가시적 비용은 엔지니어링 시간일 수 있지만 더 큰 항목들은 나중에 나타난다:
Java를 선택하면 ‘알 수 없는 것들(unknown unknowns)’이 줄어들어 24/7 가동이 필요한 시스템에서 특히 체감되는 이점이 있다.
의사결정자는 언어만 사는 것이 아니라 예측 가능한 릴리스 주기, 보안 패치 프로세스, 운영 플레이북이 있는 생태계를 산다. Java의 장수는 많은 엣지 케이스가 발견되고 문서화되며 완화되었다는 것을 의미한다—특히 감사를 중시하는 산업에서는 반복 가능한 통제가 보상으로 작용한다.
새 스택이 더 낫다고 판단될 수 있는 경우는:
그런 이득들은 지원, 채용, 사고 대응, 장기 유지보수 같은 운영 모델 전반과 비교해 평가되어야 한다.
물어라: 언어를 바꾸는 것이 비즈니스 결과(리드타임, 신뢰성, 규정비용, 고객경험)를 실질적으로 개선하는가, 아니면 단지 트렌드에 맞추는 것인가? 이득이 불명확하면 ‘지루함’을 유지하는 것이 합리적인 선택인 경우가 많다.
재작성은 깔끔한 결과를 약속하지만 대기업에서는 보통 중복 시스템의 긴 기간, 가치 전달 지연, 예기치 않은 행동 차이로 귀결된다. Java 자산을 현대화할 때는 이미 비즈니스를 제공하는 것을 유지하고, 어떻게 빌드·테스트·배포되는지를 점진적으로 개선하는 접근이 더 좋다.
실용적인 순서는 위험을 먼저 줄이고 전달 속도를 높이는 것이다.
목표는 단지 ‘더 최신의 Java’가 아니라 더 빠르고 안전한 전달이다.
빌드 표준화, 일관된 테스트 전략 채택, 정적 분석 도입, CI/CD 개선으로 피드백 루프를 단축하라. 많은 팀이 단지 반복성(어디서나 같은 빌드)과 가시성(더 나은 로그·메트릭·알림) 개선만으로도 큰 이득을 본다.
실무적 전술로는 Java 코어 주변을 더 빠른 전달 도구로 현대화하는 것이 있다. 예를 들어 팀들은 코어 Java 시스템을 안정적으로 유지하면서 내부 포털이나 동행 서비스(companion service)를 빠르게 프로토타이핑한다. Koder.ai 같은 플랫폼은 구조화된 채팅에서 React 웹앱이나 소형 Go + PostgreSQL 서비스를 생성해 기존 Java API와 통합할 수 있도록 도와준다—증명 개념, 백오피스 툴링, 또는 속도가 중요하지만 Java 코어는 낮은 위험을 유지해야 하는 UI 레이어에 유용하다.
Java를 유지하라면:
부분 마이그레이션을 고려하라면:
하나의 제품 영역을 선택해 90일 현대화 목표(기준선 업그레이드 + 하나의 고가치 리팩터)를 설정하고 성공 지표(리드타임, 변경 실패율, 사고량)를 정의한 뒤 반복하라.
로드맵이 필요하면 시스템을 위험도와 변경 빈도로 분류한 인벤토리를 작성하고 그 순서대로 현대화하라—가치 우선, 드라마는 나중에.
엔터프라이즈는 장기간에 걸친 예측 가능한 변화를 최적화하기 때문입니다. Java는 안정적인 업그레이드 경로, 장기 지원(LTS), 성숙한 운영 관행, 그리고 방대한 생태계를 제공해 핵심 시스템을 10~20년 동안 가동·유지하는 데 드는 위험과 비용을 줄여줍니다.
이 문맥에서 “대기업”은 단순히 규모가 큰 회사를 넘어 소프트웨어 관점에서 다음을 의미합니다:
이러한 제약은 대규모에서 관리 가능하고 안정적인 기술을 선호하게 만듭니다.
재작성(rewrite)은 위험을 증대시킵니다. 그 이유는:
대신 점진적 현대화(런타임 업그레이드, 모듈 리팩터링, 경계가 명확한 서비스 추출)가 보통 더 적은 혼란으로 가치를 더 빨리 전달합니다.
백워드 호환성은 업그레이드 시 기존 코드가 대부분 동일하게 작동할 가능성을 의미합니다.
실무적 효과는 다음과 같습니다:
JVM은 OS와 환경을 가로지르는 안정적인 런타임 계약을 제공합니다. 온프레미스와 클라우드가 혼재하는 환경, 다양한 리눅스 배포판과 하드웨어에서 동일한 동작을 얻기 위해 중요합니다.
또한 JVM은 플랫폼이므로 Java뿐 아니라 Kotlin, Scala 같은 JVM 언어를 도입하면서도 패키징·모니터링·운영 모델을 바꾸지 않을 수 있습니다.
대기업에서 중요한 ‘지루하지만 핵심적인’ 요소들을 JVM 생태계가 이미 커버합니다:
핵심 장점은 프로덕션에서 검증된 기본값들이 있어 자체 인프라를 많이 만들 필요가 없다는 점입니다.
일반적인 패턴은:
생태계의 성숙도는 취약점 대응 시 권고문, 패치, 도구 지원 등 명확한 워크플로우를 제공해 엔터프라이즈에서 유용합니다. 다만 보안 결과는 여전히 규율과 운영에 달려 있습니다.
대규모 팀은 반복 가능하고 문제 없는 빌드와 리팩터링을 필요로 합니다:
이런 관행은 ‘부족 전승(tribal knowledge)’ 의존도를 낮추고 여러 팀에 걸쳐 변경을 더 안전하게 만듭니다.
네—많은 엔터프라이즈가 Kubernetes와 관리형 컨테이너 플랫폼에서 Java 워크로드를 운영합니다. 실무 팁:
-XX:MaxRAMPercentage)과 힙 사이즈 적정화\n- 오토스케일과 콜드 스타트 관점에서 시작 시간(startup time) 체크; 필요시 Quarkus/Micronaut 같은 프레임워크 고려\n- 구성과 시크릿 관리를 초기에 표준화목표는 단순히 ‘Docker에서 돌아간다’가 아니라 오케스트레이션 하에서 예측 가능한 동작을 확보하는 것입니다.
Java를 선택할 때는 예측 가능한 결과(안정적인 운영, 채용의 용이성, 검증된 통합, 장기 지원)가 필요할 때가 많습니다. 다른 스택을 고려할 만한 경우:
유용한 테스트는 언어 전환이 실제 비즈니스 지표(리드타임, 사고 수, 트랜잭션 당 비용)를 개선하는지 여부입니다; 트렌드 따르기는 충분한 이유가 되지 않습니다.