<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Devloo와 개발을 즐겁게</title>
    <link>https://devloo.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 01:19:51 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Danny Seo</managingEditor>
    <image>
      <title>Devloo와 개발을 즐겁게</title>
      <url>https://tistory1.daumcdn.net/tistory/6364465/attach/32a1f0e3613f4115828fa6b07019b09d</url>
      <link>https://devloo.tistory.com</link>
    </image>
    <item>
      <title>Spring Boot 4.0 완벽 가이드: 실무 성능 9배 향상시킨 5가지 핵심 변화</title>
      <link>https://devloo.tistory.com/entry/Spring-Boot-40-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-%EC%8B%A4%EB%AC%B4-%EC%84%B1%EB%8A%A5-9%EB%B0%B0-%ED%96%A5%EC%83%81%EC%8B%9C%ED%82%A8-5%EA%B0%80%EC%A7%80-%ED%95%B5%EC%8B%AC-%EB%B3%80%ED%99%94</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Spring Boot 4.0.webp&quot; data-origin-width=&quot;5507&quot; data-origin-height=&quot;3098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n26O8/dJMcaiBHTjI/0qhmsNPoML6HhqfGCLSzfK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n26O8/dJMcaiBHTjI/0qhmsNPoML6HhqfGCLSzfK/img.webp&quot; data-alt=&quot;Unsplash &amp;amp;nbsp;/&amp;amp;nbsp; Emile Perron&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n26O8/dJMcaiBHTjI/0qhmsNPoML6HhqfGCLSzfK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn26O8%2FdJMcaiBHTjI%2F0qhmsNPoML6HhqfGCLSzfK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Spring Boot 4.0 완벽 가이드: 실무 성능 9배 향상시킨 5가지 핵심 변화&quot; loading=&quot;lazy&quot; width=&quot;5507&quot; height=&quot;3098&quot; data-filename=&quot;Spring Boot 4.0.webp&quot; data-origin-width=&quot;5507&quot; data-origin-height=&quot;3098&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Unsplash &amp;nbsp;/&amp;nbsp; Emile Perron&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;백엔드 개발자가 직면한 실무 문제를 해결하는 새로운 세대&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 11월 20일, Spring Boot 4.0이 공식 출시되었습니다. 단순한 버전 업그레이드가 아닙니다. 이번 릴리스는 현대 백엔드 아키텍처가 직면한 본질적인 문제들에 대한 Spring 팀의 명확한 답변입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 우리가 실무에서 겪고 있는 문제들&lt;/h2&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;b&gt;&quot;왜 서버 메모리는 계속 늘어나는데, 처리량은 그대로일까?&quot;&lt;/b&gt;&lt;br /&gt;Spring Boot 3.x로 구축한 MSA 환경에서 각 서비스의 메모리 사용량이 500MB를 넘어갑니다. 컨테이너 환경에서 이는 직접적인 비용 증가로 이어집니다.&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;b&gt;&quot;장애가 발생했는데, 어느 서비스가 문제인지 찾는데 왜 이렇게 오래 걸릴까?&quot;&lt;/b&gt;&lt;br /&gt;분산 시스템에서 요청 하나가 5~10개 서비스를 거칩니다. 응답 지연이 발생했을 때, 로그를 뒤져가며 원인을 찾는 데 30분 이상이 소요됩니다.&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;b&gt;&quot;콜드 스타트 시간 때문에 서버리스를 포기해야 하나?&quot;&lt;/b&gt;&lt;br /&gt;Lambda나 Cloud Run에 Spring Boot를 올리면 첫 요청에 3~5초가 걸립니다. 이는 사용자 경험에 치명적입니다.&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;b&gt;&quot;Thread Pool이 꽉 차서 서비스가 멈추는데, 어떻게 해야 하지?&quot;&lt;/b&gt;&lt;br /&gt;동시 접속자가 증가하면 Thread가 고갈됩니다. Thread Pool 크기를 늘리면 컨텍스트 스위칭 오버헤드가 증가합니다.&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;b&gt;Spring Boot 4.0은 바로 이런 문제들을 해결하기 위해 설계되었습니다.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Spring Boot 4.0이 추구하는 철학: &quot;작고, 빠르고, 투명하게&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring 팀은 이번 릴리스를 준비하며 세 가지 핵심 원칙을 세웠습니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;작게(Modular): 필요한 것만 가져가라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 Spring Boot는 많은 기능이 하나의 큰 jar에 묶여 있었습니다. &lt;br /&gt;편리하지만, Native Image 빌드 시 불필요한 메타데이터까지 포함되어 이미지 크기가 비대해졌습니다. &lt;br /&gt;Spring Boot 4.0은 auto-configuration을 포함한 핵심 모듈들을 더 작은 단위로 분리했습니다. &lt;br /&gt;사용하지 않는 기능은 classpath에 들어오지 않습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;빠르게(Performance): 실행 시간은 곧 비용이다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라우드 환경에서 부팅 시간 1초는 실제 비용입니다. &lt;br /&gt;GraalVM Native Image 지원이 대폭 강화되었고, AOT 처리가 정교해져 시작 시간과 메모리 사용량이 획기적으로 감소했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;투명하게(Observability): 보이지 않으면 고칠 수 없다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Micrometer 2와 OpenTelemetry 통합이 이루어져 traces, logs, metrics가 자연스럽게 연결됩니다. &lt;br /&gt;더 이상 장애 추적을 위해 여러 도구를 오가며 로그를 맞춰볼 필요가 없습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 실무를 바꾸는 핵심 변화들&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(1) Native Image: 서버리스의 진짜 시작&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황:&lt;/b&gt;&lt;br /&gt;기존 Spring Boot 3.x 애플리케이션을 AWS Lambda에 배포하면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 요청 응답: 4~6초&lt;/li&gt;
&lt;li&gt;메모리 사용: 512MB~1GB&lt;/li&gt;
&lt;li&gt;콜드 스타트로 인한 타임아웃 빈발&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring Boot 4.0의 해결책:&lt;/b&gt;&lt;br /&gt;GraalVM 24와 완전히 정렬되었고, Ahead-of-Time 처리가 향상되어 더 빠른 빌드 시간과 감소된 시작 메모리 사용량을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 적용 사례를 보면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 요청 응답: 0.5~1초 (80% 단축)&lt;/li&gt;
&lt;li&gt;메모리 사용: 128~256MB (50~75% 감소)&lt;/li&gt;
&lt;li&gt;이미지 크기: 기존 대비 70% 축소&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 변경은 거의 없습니다. Gradle/Maven 설정만 조정하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;plugins {
    id 'org.graalvm.buildtools.native' version '0.10.4'
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(2) Virtual Threads: 성능 병목의 근본 해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황:&lt;/b&gt;&lt;br /&gt;외부 API를 호출하는 Spring Boot 애플리케이션에서:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Thread Pool 200개로 설정&lt;/li&gt;
&lt;li&gt;동시 요청 500개 발생&lt;/li&gt;
&lt;li&gt;300개 요청은 대기 상태&lt;/li&gt;
&lt;li&gt;CPU는 20%인데 서비스는 느림&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring Boot 4.0의 해결책:&lt;/b&gt;&lt;br /&gt;Java 21+의 Virtual Threads를 자연스럽게 활용할 수 있습니다. 설정 한 줄이면 됩니다:&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;spring:
  threads:
    virtual:
      enabled: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 수만 개의 동시 연결도 문제없습니다. OS Thread가 아닌 경량 Virtual Thread를 사용하기 때문입니다. 블로킹 IO가 많은 API Gateway나 BFF(Backend For Frontend) 패턴에서 극적인 효과를 볼 수 있습니다.&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;b&gt;실측 결과:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동시 처리 가능 요청: 200 &amp;rarr; 10,000+ (50배 증가)&lt;/li&gt;
&lt;li&gt;평균 응답 시간: 500ms &amp;rarr; 150ms (70% 개선)&lt;/li&gt;
&lt;li&gt;CPU 사용률: 동일 조건에서 오히려 감소&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(3) Observability: 장애 대응 시간을 1/10로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황:&lt;/b&gt;&lt;br /&gt;주문 서비스가 느려졌다는 알림을 받았습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Grafana에서 메트릭 확인 (응답 시간 증가)&lt;/li&gt;
&lt;li&gt;Kibana에서 로그 검색 (어떤 요청이 느린지)&lt;/li&gt;
&lt;li&gt;Jaeger에서 트레이스 찾기 (어느 서비스가 병목인지)&lt;/li&gt;
&lt;li&gt;각 도구의 correlation ID를 수동으로 매칭&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에 15~30분이 소요됩니다.&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;b&gt;Spring Boot 4.0의 해결책:&lt;/b&gt;&lt;br /&gt;새로운 spring-boot-starter-opentelemetry 스타터가 추가되어 OpenTelemetry SDK가 자동 구성됩니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-opentelemetry&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의존성 추가만으로:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Traces: 분산 요청 추적 자동화&lt;/li&gt;
&lt;li&gt;Metrics: Micrometer가 자동으로 OpenTelemetry 형식으로 변환&lt;/li&gt;
&lt;li&gt;Logs: Trace ID가 자동 주입&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 하나의 Trace ID로 전체 흐름을 파악합니다. 장애 대응 시간이 3~5분으로 단축됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(4) API Versioning: 버전 관리의 현실적인 해법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황:&lt;/b&gt;&lt;br /&gt;모바일 앱이 3개 버전이 동시에 사용 중입니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;v1: 구버전 사용자 (20%)&lt;/li&gt;
&lt;li&gt;v2: 대다수 사용자 (70%)&lt;/li&gt;
&lt;li&gt;v3: 최신 버전 (10%)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 버전마다 API 응답 형식이 다릅니다. 지금까지는:&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;if (version.equals(&quot;v1&quot;)) { ... }
else if (version.equals(&quot;v2&quot;)) { ... }&lt;/code&gt;&lt;/pre&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;b&gt;Spring Boot 4.0의 해결책:&lt;/b&gt;&lt;br /&gt;내장된 API Versioning 지원:&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@RestController
@RequestMapping(&quot;/api/orders&quot;)
public class OrderController {
    
    @GetMapping(version = &quot;1.0&quot;)
    public OrderV1Response getOrder(@PathVariable Long id) {
        // v1 로직
    }
    
    @GetMapping(version = &quot;2.0&quot;)
    public OrderV2Response getOrder(@PathVariable Long id) {
        // v2 로직
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청 헤더나 URL 경로로 버전을 자동 라우팅합니다. 코드가 명확해지고 유지보수가 쉬워집니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(5) Resilience Annotations: 안정성을 코드에 선언하라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황:&lt;/b&gt;&lt;br /&gt;외부 결제 API가 간헐적으로 실패합니다. 재시도 로직을 직접 구현하면:&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;int attempts = 0;
while (attempts &amp;lt; 3) {
    try {
        return paymentApi.process(order);
    } catch (Exception e) {
        attempts++;
        Thread.sleep(1000 * attempts);
    }
}&lt;/code&gt;&lt;/pre&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;b&gt;Spring Boot 4.0의 해결책:&lt;/b&gt;&lt;br /&gt;Spring Framework 7의 Resilience 지원:&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Service
public class PaymentService {
    
    @Retryable(
        maxAttempts = 3,
        backoff = @Backoff(delay = 1000, multiplier = 2)
    )
    public PaymentResult processPayment(Order order) {
        return paymentApi.process(order);
    }
    
    @ConcurrencyLimit(maxConcurrent = 50)
    public void processHighLoadOperation() {
        // 동시 실행 제한
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재시도, 백오프, 동시성 제어를 선언적으로 처리합니다. Resilience4j를 별도로 추가할 필요가 없습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(6) 모듈화: 필요한 것만, 정확하게&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황:&lt;/b&gt;&lt;br /&gt;간단한 REST API 서비스인데:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 결과물: 80MB&lt;/li&gt;
&lt;li&gt;Native Image: 200MB+&lt;/li&gt;
&lt;li&gt;시작 시간: 2.5초&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불필요한 auto-configuration이 포함되어 있습니다.&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;b&gt;Spring Boot 4.0의 해결책:&lt;/b&gt;&lt;br /&gt;내부 모듈이 재구성되어 의존성이 명확해졌습니다. &lt;br /&gt;예를 들어, WebFlux를 사용하지 않으면 관련 모듈이 classpath에 들어오지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 결과물: 45MB (44% 감소)&lt;/li&gt;
&lt;li&gt;Native Image: 80MB (60% 감소)&lt;/li&gt;
&lt;li&gt;시작 시간: 0.9초 (64% 단축)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 마이그레이션 가이드: 안전하게 넘어가기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;즉시 업그레이드 가능한 경우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java 17+ 사용 중&lt;/li&gt;
&lt;li&gt;Spring Boot 3.5 이상&lt;/li&gt;
&lt;li&gt;Jakarta EE 10+ 사용&lt;/li&gt;
&lt;li&gt;JUnit 5 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주의가 필요한 경우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java 11 이하 (Java 17로 먼저 업그레이드)&lt;/li&gt;
&lt;li&gt;javax.* 패키지 사용 (jakarta.*로 변경 필요)&lt;/li&gt;
&lt;li&gt;JUnit 4 사용 (JUnit 5로 마이그레이션)&lt;/li&gt;
&lt;li&gt;커스텀 Auto-configuration (모듈 구조 변경 확인)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;권장 마이그레이션 절차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1단계: Spring Boot 3.5로 업그레이드&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 현재 버전이 3.3 이하라면 먼저 3.5로
&lt;/code&gt;&lt;/pre&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;b&gt;2단계: Deprecation Warning 제거&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;./gradlew build
# WARNING 메시지 모두 해결
&lt;/code&gt;&lt;/pre&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;b&gt;3단계: 의존성 업데이트&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;dependencies {
    // Jackson 2.x &amp;rarr; 3.x
    // JUnit 4 &amp;rarr; JUnit 5
    // 기타 주요 라이브러리 최신화
}
&lt;/code&gt;&lt;/pre&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;b&gt;4단계: 4.0으로 업그레이드&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;plugins {
    id 'org.springframework.boot' version '4.0.0'
}
&lt;/code&gt;&lt;/pre&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;b&gt;5단계: 테스트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 테스트 스위트 실행&lt;/li&gt;
&lt;li&gt;통합 테스트 환경 검증&lt;/li&gt;
&lt;li&gt;성능 테스트 비교&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide&quot;&gt;공식 마이그레이션 가이드&lt;/a&gt;를 참고하세요.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 실전 적용 사례&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Case 1: E-commerce API Gateway&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Before (Spring Boot 3.3):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동시 처리: 200 TPS&lt;/li&gt;
&lt;li&gt;평균 응답: 450ms&lt;/li&gt;
&lt;li&gt;P99 응답: 2.1s&lt;/li&gt;
&lt;li&gt;Pod당 메모리: 1GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;After (Spring Boot 4.0 + Virtual Threads):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동시 처리: 1,800 TPS (9배)&lt;/li&gt;
&lt;li&gt;평균 응답: 180ms (60% 개선)&lt;/li&gt;
&lt;li&gt;P99 응답: 850ms (60% 개선)&lt;/li&gt;
&lt;li&gt;Pod당 메모리: 512MB (50% 절감)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;월 서버 비용이 40% 감소했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Case 2: Serverless 이미지 처리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Before (Spring Boot 3.3 JVM):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콜드 스타트: 4.2초&lt;/li&gt;
&lt;li&gt;실행 메모리: 1GB&lt;/li&gt;
&lt;li&gt;Lambda 타임아웃 빈발&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;After (Spring Boot 4.0 Native):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콜드 스타트: 0.6초 (86% 단축)&lt;/li&gt;
&lt;li&gt;실행 메모리: 192MB (81% 절감)&lt;/li&gt;
&lt;li&gt;타임아웃 제로&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lambda 실행 비용이 70% 감소했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Case 3: MSA 장애 대응&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Before:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장애 감지: 알림 받고 인지&lt;/li&gt;
&lt;li&gt;원인 파악: 로그/메트릭/트레이스 수동 조합 (평균 25분)&lt;/li&gt;
&lt;li&gt;해결: 문제 서비스 특정 후 조치&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;After (OpenTelemetry 통합):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장애 감지: 동일&lt;/li&gt;
&lt;li&gt;원인 파악: Trace ID로 즉시 특정 (평균 3분)&lt;/li&gt;
&lt;li&gt;해결: 빠른 의사결정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MTTR(Mean Time To Recovery)이 85% 단축되었습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 결론: 지금 Spring Boot 4.0을 선택해야 하는 이유&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 4.0은 단순한 프레임워크 업데이트가 아닙니다. 이것은:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;br /&gt;클라우드 네이티브 시대의 표준을 재정의합니다&lt;/b&gt;&lt;br /&gt;서버리스, 컨테이너, MSA 환경에서 Spring Boot를 사용하는 데 더 이상 타협이 필요 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;br /&gt;개발 생산성과 운영 효율성을 동시에 잡습니다&lt;/b&gt;&lt;br /&gt;더 빠른 개발, 더 낮은 비용, 더 안정적인 서비스. 이 세 가지를 동시에 달성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;br /&gt;기술 부채를 청산하고 미래를 준비합니다&lt;/b&gt;&lt;br /&gt;Virtual Threads, Native Image, OpenTelemetry. 이것들은 이미 업계 표준이 되고 있습니다.&lt;br /&gt;Spring Boot 4.0은 이들을 가장 쉽게 활용할 수 있는 방법을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;br /&gt;무엇보다, 여러분을 더 나은 개발자로 만듭니다&lt;/b&gt;&lt;br /&gt;기술 스택을 최신으로 유지한다는 것은 단순히 신기술을 쫓는 것이 아닙니다.&lt;br /&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;br /&gt;Spring Boot 4.0은 그 선택을 더 쉽고, 더 가치 있게 만들어줄 것입니다.&lt;/p&gt;</description>
      <category> Development/Code</category>
      <category>GraalVM</category>
      <category>Java</category>
      <category>NativeImage</category>
      <category>opentelemetry</category>
      <category>SpringBoot</category>
      <category>SpringBoot4</category>
      <category>VirtualThreads</category>
      <category>백엔드개발</category>
      <category>서버리스</category>
      <category>성능회적화</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/59</guid>
      <comments>https://devloo.tistory.com/entry/Spring-Boot-40-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-%EC%8B%A4%EB%AC%B4-%EC%84%B1%EB%8A%A5-9%EB%B0%B0-%ED%96%A5%EC%83%81%EC%8B%9C%ED%82%A8-5%EA%B0%80%EC%A7%80-%ED%95%B5%EC%8B%AC-%EB%B3%80%ED%99%94#entry59comment</comments>
      <pubDate>Tue, 25 Nov 2025 14:49:44 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT로 코딩하는 개발자가 2년 후 성장을 멈추는 이유</title>
      <link>https://devloo.tistory.com/entry/ChatGPT%EB%A1%9C-%EC%BD%94%EB%94%A9%ED%95%98%EB%8A%94-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-2%EB%85%84-%ED%9B%84-%EC%84%B1%EC%9E%A5%EC%9D%84-%EB%A9%88%EC%B6%94%EB%8A%94-%EC%9D%B4%EC%9C%A0</link>
      <description>&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ChatGPT로 코딩하는 개발자가 2년 후 성장을 멈추는 이유.webp&quot; data-origin-width=&quot;6048&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQpV2M/dJMcagDWmK2/e2ngxukt2vuVigkg9uKS8k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQpV2M/dJMcagDWmK2/e2ngxukt2vuVigkg9uKS8k/img.webp&quot; data-alt=&quot;사진: Unsplash 의 Daniil Komov&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQpV2M/dJMcagDWmK2/e2ngxukt2vuVigkg9uKS8k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQpV2M%2FdJMcagDWmK2%2Fe2ngxukt2vuVigkg9uKS8k%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;ChatGPT로 코딩하는 개발자가 2년 후 성장을 멈추는 이유&quot; loading=&quot;lazy&quot; width=&quot;6048&quot; height=&quot;4032&quot; data-filename=&quot;ChatGPT로 코딩하는 개발자가 2년 후 성장을 멈추는 이유.webp&quot; data-origin-width=&quot;6048&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진: Unsplash 의 Daniil Komov&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부트캠프 수강생 A는 3개월 만에 스프링 부트 프로젝트를 완성했습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드는 깔끔했고, 과제 제출 속도는 누구보다 빨랐습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그런데 면접에서 &quot;이 코드가 왜 이렇게 동작하나요?&quot;라는 질문에 아무 말도 하지 못했습니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;저는 스프링 부트 캠프에서 강의를 하면서 이런 장면을 점점 자주 목격합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드는 돌아가는데, 본인은 그 코드를 이해하지 못하는 기이한 상황. 이것이 LLM 의존이 만들어낸 새로운 풍경입니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 글을 읽으면 알 수 있는 것&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM 의존이 왜 단순한 &quot;커닝&quot;이 아닌 &quot;성장 구조 파괴&quot;인지&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신경과학 관점에서 당신의 두뇌에 무슨 일이 벌어지는지&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실무에서 LLM 의존 개발자가 어떻게 무너지는지&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;건강하게 LLM을 활용하는 방법&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 당신의 두뇌는 &quot;쉬운 길&quot;을 선택하도록 설계되어 있다&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인간의 뇌는 에너지를 절약하려는 성향이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제 분석, 풀이 경로 탐색, 디버깅 같은 활동은 뇌에게 상당한 에너지를 요구합니다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;LLM이 이 모든 과정을 대신 처리해주면, 뇌는 자연스럽게 학습합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;이 과정보다 LLM에게 맡기는 게 훨씬 효율적이네.&quot;&lt;/span&gt;&lt;/b&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;span style=&quot;color: #000000;&quot;&gt;신경과학에서는 이를 &lt;b&gt;'pruning(가지치기)'&lt;/b&gt;이라고 부릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자주 사용하는 신경 회로는 강화되고, 사용하지 않는 회로는 제거됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM에게 문제 해결을 위임할 때마다, 당신의 문제 해결 회로는 조금씩 약해지고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 인사이트&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현업은 정답이 없는 문제와 매일 싸우는 전장입니다. 학습 과정에서 '정답 제공'에 익숙해진 개발자는 이 전장에서 무방비 상태로 서 있게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 조각난 지식은 연결되지 않는다&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, 스프링과 자바 기반 지식은 명확한 계층 구조를 가지고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;JVM &amp;rarr; Java 언어 &amp;rarr; Spring DI &amp;rarr; AOP &amp;rarr; Bean Lifecycle &amp;rarr; Transaction
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 구조를 이해해야 비로소 중급 개발자로 도약할 수 있습니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;그런데 LLM이 제공하는 정보는 대부분 &lt;b&gt;&quot;정답처럼 보이는 조각난 지식&quot;&lt;/b&gt;입니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;실제 사례를 보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 91.5117%; height: 78px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 42.45%; height: 18px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;알고 있는 것&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 39.2318%; height: 18px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모르는 것&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 42.45%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;@Transactional 붙이면 트랜잭션 적용됨&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 39.2318%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;왜 프록시 기반으로 동작하는지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 42.45%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;@Autowired로 주입하면 됨&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 39.2318%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;순환 참조가 왜 발생하는지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 42.45%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;@RestController 붙이면 JSON 반환&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 39.2318%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HttpMessageConverter가 뭔지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;span style=&quot;color: #000000;&quot;&gt;조각난 지식은 연결되지 않습니다. 연결되지 않으니 구조가 만들어지지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실무에서 벌어지는 일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;트랜잭션이 안 먹어요&quot; &amp;rarr; self-invocation 문제인데 원인을 모름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;빈 주입이 안 돼요&quot; &amp;rarr; 컴포넌트 스캔 범위 문제인데 구조를 모름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;API가 느려요&quot; &amp;rarr; N+1 문제인데 JPA 동작 원리를 모름&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 판단력은 비교 경험에서 생긴다&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;좋은 코드와 나쁜 코드. 좋은 패턴과 안티패턴.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 것들을 구분하는 판단력은 어디서 올까요?&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;직접 비교해보는 경험에서 옵니다.&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;초보자가 성장하려면 다양한 선택지를 놓고 스스로 비교하고 평가해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 LLM이 &quot;하나의 정답&quot;을 제시하면, 학습자는 이 코드가 왜 좋거나 나쁜지 판단해볼 시간조차 갖지 못합니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;무비판적 복사가 반복되고, 판단력은 성장하지 못합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;- 코드스멜을 구분하지 못한다
- 구조가 적절한지 판단하기 어렵다
- 테스트 코드의 품질을 평가할 기준이 없다
- &quot;일단 돌아가기만 하면 된다&quot; 수준에서 벗어나지 못한다&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 감각은 고통에서 태어난다&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;숙련된 개발자에게는 일종의 직감이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;여기서 버그가 날 것 같은데...&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;이 구조는 확장성 측면에서 문제가 있어.&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;이 상황에서는 DB 락 이슈가 생기겠다.&quot;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;이런 감각은 어디서 오는 걸까요?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;정답은 고통입니다.&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;직접 문제에 부딪히고, 밤새 디버깅하고, 결국 해결했을 때의 경험이 축적되어 감각이 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;감각은 &lt;b&gt;&quot;문제-해결의 반복&quot;&lt;/b&gt;에서만 생성됩니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;LLM이 원인을 찾아주고, 문제를 진단해주고, 버그를 해결해주면 학습자는 이 고통을 경험할 기회를 잃습니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;불편한 진실&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아무리 많은 코드를 작성해도, 그 과정에서 고통이 없었다면 성장도 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. 당신은 개발자인가, 프롬프트 운영자인가&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 패턴이 익숙하다면 위험 신호입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;&quot;이 코드 좀 고쳐줘&quot;
&quot;이 오류 해결해줘&quot;  
&quot;이 기능 어떻게 만들어?&quot;
&lt;/code&gt;&lt;/pre&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;span style=&quot;color: #000000;&quot;&gt;이런 요청이 반복될수록 뇌는 사고를 포기하는 방향으로 최적화됩니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;문제를 마주할 때마다 자동적으로 이런 반응 패턴이 형성됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;내가 생각할 필요 없어, LLM이 해줄 거야.&quot;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;LLM은 도구입니다. 그런데 주도권이 LLM에게 넘어가면, 당신은 더 이상 개발자가 아닙니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스스로 만들고 고민하는 사람이 아니라, &lt;b&gt;LLM이 만들어주는 흐름을 따라가는 운영자&lt;/b&gt;가 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6. 단기 효율 vs 장기 성장의 딜레마&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM 의존의 가장 교활한 측면은 &lt;b&gt;단기적으로 효율적으로 보인다&lt;/b&gt;는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 63.4884%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 35.6449%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;단기 (3~6개월)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 40.8603%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;장기 (2년 이후)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 35.6449%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빠른 코드 작성&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 40.8603%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구조적 사고 부재&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 35.6449%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빠른 과제 제출&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 40.8603%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;디버깅 능력 부재&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 35.6449%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빠른 프로젝트 완성&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 40.8603%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실전 문제 해결 불가&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;span style=&quot;color: #000000;&quot;&gt;개발 학습의 핵심은 스스로 질문을 만들고, 가설을 세우고, 실험하고, 실패하고, 다시 고치는 &lt;b&gt;&quot;자기 생성 학습&quot;&lt;/b&gt; 사이클입니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;LLM 의존은 이 모든 것을 LLM이 생성하게 만듭니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실무에서 만나는 벽&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분산 트랜잭션, 성능 병목, 동시성 이슈 같은 실전 문제 앞에서 속수무책이 됩니다.&lt;br /&gt;이 문제들은 LLM에게 &quot;해결해줘&quot;라고 할 수 없는 문제들입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7. 디버깅: 개발자의 진짜 실력이 드러나는 순간&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스프링 부트 실무의 대부분은 디버깅입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;- 로그 분석
- 예외 스택 추적  
- 컨텍스트 초기화 문제
- Bean 주입 오류
- 트랜잭션 전파 이슈
- 캐시 일관성 문제
- 동시성과 락 문제&lt;/code&gt;&lt;/pre&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;span style=&quot;color: #000000;&quot;&gt;디버깅은 단순히 에러 메시지를 해결하는 게 아닙니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시스템이 어떻게 돌아가는지 머릿속에 모델링하고, 가능한 원인을 열거하고, 하나씩 제거하며 가설을 좁혀가는 &lt;b&gt;고도의 추론 능력&lt;/b&gt;입니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;문제를 만날 때마다 &quot;에러 해결해줘&quot;라고 입력하면, 이 추론 과정이 사라집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;'디버깅 사고 회로' 자체가 발달하지 않습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 어떻게 해야 하는가&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM을 완전히 금지하자는 이야기가 아닙니다. 그것은 비현실적이고, 바람직하지도 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;문제는 사용 시점과 방식입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Rule 1: 먼저 30분은 직접 시도하라&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에러가 발생하면 최소 30분은 직접 분석해보세요. 공식 문서를 찾아보고, 스택 트레이스를 읽고, 가설을 세워보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 과정에서 실패해도 괜찮습니다. 아니, &lt;b&gt;실패해야 합니다.&lt;/b&gt; 그 실패가 당신을 성장시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Rule 2: &quot;정답&quot;이 아닌 &quot;이해&quot;를 요청하라&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Bad:  &quot;이 에러 해결해줘&quot;
Good: &quot;이 에러가 발생하는 원리를 설명해줘&quot;

Bad:  &quot;이 기능 코드 짜줘&quot;  
Good: &quot;이 두 가지 구현 방식의 차이가 뭐야?&quot;

Bad:  &quot;이 코드 고쳐줘&quot;
Good: &quot;이 코드의 문제점이 뭘까?&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Rule 3: 복사하지 말고 다시 작성하라&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM의 답변을 그대로 복사하지 마세요. 이해한 후에 &lt;b&gt;자신의 코드로 다시 작성&lt;/b&gt;하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 한 단계가 학습과 복사를 가릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마치며: 고통 없이 성장 없다&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM 의존이 위험한 이유는 단순히 &quot;커닝&quot;이기 때문이 아닙니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;학습자의 두뇌가 '생각하는 법'을 배우지 못하고, 문제 해결, 추론, 감각, 설계 능력을 잃어버리기 때문입니다.&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;지금 당장 LLM 없이 코딩하는 것이 느리고 고통스럽게 느껴질 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 그 고통이 바로 성장의 신호입니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;쉬운 길을 선택할 때마다 당신의 개발자로서의 잠재력이 조금씩 닫혀갑니다.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;LLM이 당신의 코드를 대신 짜주는 동안, 당신은 무엇을 잃고 있는지 한 번 생각해보세요.&lt;/span&gt;&lt;/p&gt;</description>
      <category> Development/ETC</category>
      <category>ChatGPT</category>
      <category>개발공부</category>
      <category>개발자</category>
      <category>개발자되는법</category>
      <category>개발자성장</category>
      <category>부트캠프</category>
      <category>스프링부트</category>
      <category>코딩</category>
      <category>코딩공부</category>
      <category>프로그래밍</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/58</guid>
      <comments>https://devloo.tistory.com/entry/ChatGPT%EB%A1%9C-%EC%BD%94%EB%94%A9%ED%95%98%EB%8A%94-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-2%EB%85%84-%ED%9B%84-%EC%84%B1%EC%9E%A5%EC%9D%84-%EB%A9%88%EC%B6%94%EB%8A%94-%EC%9D%B4%EC%9C%A0#entry58comment</comments>
      <pubDate>Mon, 24 Nov 2025 11:49:16 +0900</pubDate>
    </item>
    <item>
      <title>부트캠프 나왔는데 왜 취업이 안 되지? - 3개월 배웠지만 1년째 구직 중인 이유</title>
      <link>https://devloo.tistory.com/entry/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EB%82%98%EC%99%94%EB%8A%94%EB%8D%B0-%EC%99%9C-%EC%B7%A8%EC%97%85%EC%9D%B4-%EC%95%88-%EB%90%98%EC%A7%80-3%EA%B0%9C%EC%9B%94-%EB%B0%B0%EC%9B%A0%EC%A7%80%EB%A7%8C-1%EB%85%84%EC%A7%B8-%EA%B5%AC%EC%A7%81-%EC%A4%91%EC%9D%B8-%EC%9D%B4%EC%9C%A0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;부트캠프 현실, 개발자 취업 채용시장.webp&quot; data-origin-width=&quot;3800&quot; data-origin-height=&quot;2138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kOBEV/btsQJ3K204t/DMGLf1zaMGU8kBynzD6XQ0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kOBEV/btsQJ3K204t/DMGLf1zaMGU8kBynzD6XQ0/img.webp&quot; data-alt=&quot;사진: Unsplash 의 Vitaly Gariev&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kOBEV/btsQJ3K204t/DMGLf1zaMGU8kBynzD6XQ0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkOBEV%2FbtsQJ3K204t%2FDMGLf1zaMGU8kBynzD6XQ0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3800&quot; height=&quot;2138&quot; data-filename=&quot;부트캠프 현실, 개발자 취업 채용시장.webp&quot; data-origin-width=&quot;3800&quot; data-origin-height=&quot;2138&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진: Unsplash 의 Vitaly Gariev&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 주말, 카페에서 지인을 만났다. 작년에 백엔드 부트캠프를 수료한 친구였는데, 여전히 취업 준비를 하고 있다고 했다. &quot;3개월 동안 빡세게 했는데... 생각보다 쉽지 않네&quot;라며 씁쓸하게 웃던 모습이 기억에 남는다.&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;이런 이야기를 한두 번 들은 게 아니다. 부트캠프 광고만 보면 &quot;3개월 후 개발자 취업 성공!&quot;이라는 문구가 넘쳐난다. 실제로 성공한 사례들도 많이 나온다. 그런데 왜 어떤 사람은 수료 후 바로 취업하고, 어떤 사람은 몇 개월, 심지어 1년 가까이 헤매는 걸까?&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;단순히 &quot;공부를 덜 했나?&quot;라고 생각하기 쉽지만, 그게 전부는 아니다. 더 근본적인 문제가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;기업은 &quot;당장 쓸 수 있는 사람&quot;을 찾는다&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사는 자선 단체가 아니다. 이미 돌아가고 있는 서비스가 있고, 고객들이 사용하고 있다. 서버가 다운되면 바로 컴플레인이 들어온다. 그러니까 채용 담당자 입장에서는 &lt;b&gt;&quot;팀에 투입해도 최소한 발목은 안 잡을 사람&quot;&lt;/b&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;그런데 부트캠프에서 배우는 건 대부분 &quot;코딩 스킬&quot;에 머무른다. Spring Boot로 API 만들기, MySQL에 데이터 저장하기, AWS에 배포하기... 분명 중요한 기술들이다. 하지만 실제 현업에서는 이런 것들이 기본기일 뿐이다.&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시에 서비스가 터졌다고 하자. 이때 필요한 건 &quot;코딩을 잘하는 능력&quot;이 아니라 &quot;어디서 문제가 생겼는지 빠르게 찾아내고 대응하는 능력&quot;이다. 로그를 뒤져가며 원인을 파악하고, 임시 조치를 한 다음, 근본적인 해결책을 찾는... 이런 경험을 부트캠프에서 해볼 기회는 거의 없다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3개월에 모든 걸 다 배울 수는 없다&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 말하면, 3~6개월이라는 시간은 너무 짧다. Java 기초부터 객체지향, 데이터베이스, JPA, Spring, 클라우드까지... 대학교 4년 과정을 몇 개월에 압축하려니 어쩔 수 없이 &quot;따라하기&quot; 위주가 될 수밖에 없다.&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;&quot;JPA에서 N+1 문제가 생기면 fetch join을 쓰세요.&quot;&lt;br /&gt;&quot;Redis 캐시를 적용하려면 이 어노테이션을 붙이세요.&quot;&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;이런 식으로 배우다 보면, 일단 돌아가는 코드는 만들 수 있게 된다. 하지만 면접에서 &quot;왜 그렇게 했나요?&quot;라고 물으면 대답이 막힌다. 더 심각한 건, 예상치 못한 문제가 생겼을 때 어떻게 접근해야 할지 모른다는 점이다.&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;실제로 현업에서는 &quot;정답이 없는 문제&quot;가 대부분이다. 갑자기 트래픽이 몰렸는데 어디서 병목이 생기고 있는지, 데이터가 꼬였는데 어떻게 복구할지... 이런 건 구글에서 검색해도 딱 떨어지는 답이 나오지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;기술보다 중요한 건 &quot;현실감각&quot;이다&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 채용 공고를 보면 &quot;Spring Boot, MySQL, AWS&quot; 같은 기술 스택이 쭉 나열되어 있다. 그래서 많은 부트캠프 수강생들이 &quot;이 기술들만 익히면 되겠구나&quot;라고 생각한다.&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;&quot;서비스가 느려졌다는 고객 불만이 들어왔습니다. 어떻게 해결하시겠어요?&quot;&lt;br /&gt;&quot;개인정보가 포함된 API를 설계할 때 어떤 점을 고려해야 할까요?&quot;&lt;br /&gt;&quot;팀 프로젝트에서 의견 충돌이 생겼을 때 어떻게 해결하셨나요?&quot;&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;b&gt;&quot;현실에서 부딪히는 문제&quot;&lt;/b&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;포트폴리오가 다 비슷비슷하다&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 부트캠프 수강생들의 포트폴리오를 보면 정말 비슷하다. 쇼핑몰, 게시판, 예약 시스템... 기능도 비슷하고 사용한 기술도 비슷하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;채용 담당자 입장에서는 어떨까? 하루에 수십 개의 포트폴리오를 보는데, 모두 비슷비슷하다면 누가 더 뛰어난지 구분하기 어렵다. 결국 &quot;그냥 무난한 수준&quot;으로 묶여버리는 것이다.&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;차별화가 필요한 이유가 여기에 있다. 같은 쇼핑몰 프로젝트라도 &quot;실제 사용자 100명을 대상으로 베타 테스트를 해봤다&quot;거나 &quot;성능 개선을 통해 응답 시간을 50% 단축했다&quot;는 스토리가 있다면 완전히 다르게 보인다.&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;하지만 대부분의 부트캠프에서는 이런 &quot;추가 도전&quot;을 할 여유를 주지 않는다. 정해진 커리큘럼을 따라가기에도 시간이 부족하기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;태도가 실력을 이긴다는 현실&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흥미롭게도, 실제 채용 담당자들과 이야기해보면 이런 말을 자주 듣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;실력이 부족해도 상관없어요. 대신 모르는 걸 솔직하게 인정하고 배우려는 자세가 있는 사람을 뽑고 싶어요.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신입 개발자에게 완벽한 실력을 기대하는 회사는 없다. 어차피 들어와서 배우면 된다. 하지만 &quot;배울 수 있는 사람&quot;인지 &quot;배우려고 하지 않는 사람&quot;인지는 중요하다.&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;그런데 일부 부트캠프 수강생들은 &quot;나는 이미 준비가 끝났다&quot;는 태도를 보인다. 물론 자신감은 좋다. 하지만 겸손함이 없으면, 팀에 들어와서도 적응하기 어렵다.&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;실제로 현업 개발자들이 신입에게 가장 듣기 싫어하는 말이 &quot;부트캠프에서는 이렇게 배웠는데요?&quot;라는 표현이라고 한다. 현실과 교육 과정의 차이를 인정하지 않으려는 태도로 비춰지기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결국 문제는 &quot;기대치의 차이&quot;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면, 부트캠프 수강생들이 취업에 어려움을 겪는 건 실력이 부족해서가 아니다. 기업이 원하는 것과 부트캠프에서 가르치는 것 사이에 간극이 있기 때문이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기업&lt;/b&gt;: 실무 적응력, 문제 해결 경험, 협업 능력, 성장 가능성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부트캠프&lt;/b&gt;: 기술 스택 습득, 프로젝트 완성, 취업률 높이기&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;그럼 어떻게 해야 할까?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 질문이 남는다. 그럼 부트캠프를 수료한 후에는 어떻게 해야 할까?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실무 감각을 어떻게 기를 수 있을까?&lt;/li&gt;
&lt;li&gt;차별화된 포트폴리오는 어떻게 만들까?&lt;/li&gt;
&lt;li&gt;기업이 원하는 태도를 어떻게 어필할까?&lt;/li&gt;
&lt;/ul&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;다음 글에서는 &quot;부트캠프 이후 반드시 해야 할 5가지&quot;를 다룰 예정입니다. 실제 사례와 함께 구체적인 학습 로드맵을 제시하겠습니다.&lt;/i&gt;&lt;/p&gt;</description>
      <category> Development/ETC</category>
      <category>개발교육</category>
      <category>개발자</category>
      <category>개발자채용</category>
      <category>개발자취업</category>
      <category>개발자현실</category>
      <category>교육</category>
      <category>백엔드 부트캠프</category>
      <category>부트캠프</category>
      <category>이직시장</category>
      <category>채용</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/57</guid>
      <comments>https://devloo.tistory.com/entry/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EB%82%98%EC%99%94%EB%8A%94%EB%8D%B0-%EC%99%9C-%EC%B7%A8%EC%97%85%EC%9D%B4-%EC%95%88-%EB%90%98%EC%A7%80-3%EA%B0%9C%EC%9B%94-%EB%B0%B0%EC%9B%A0%EC%A7%80%EB%A7%8C-1%EB%85%84%EC%A7%B8-%EA%B5%AC%EC%A7%81-%EC%A4%91%EC%9D%B8-%EC%9D%B4%EC%9C%A0#entry57comment</comments>
      <pubDate>Sun, 21 Sep 2025 17:11:41 +0900</pubDate>
    </item>
    <item>
      <title>MCP 완벽 가이드: AI와 세상을 연결하는 새로운 표준</title>
      <link>https://devloo.tistory.com/entry/MCP-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-AI%EC%99%80-%EC%84%B8%EC%83%81%EC%9D%84-%EC%97%B0%EA%B2%B0%ED%95%98%EB%8A%94-%EC%83%88%EB%A1%9C%EC%9A%B4-%ED%91%9C%EC%A4%80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;mcp-feature-image.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AHB7b/btsNKripQcB/dkCeSAAIOsekxHAKpdrKi0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AHB7b/btsNKripQcB/dkCeSAAIOsekxHAKpdrKi0/img.webp&quot; data-alt=&quot;MCP 완벽 가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AHB7b/btsNKripQcB/dkCeSAAIOsekxHAKpdrKi0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAHB7b%2FbtsNKripQcB%2FdkCeSAAIOsekxHAKpdrKi0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;512&quot; data-filename=&quot;mcp-feature-image.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MCP 완벽 가이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP란 무엇인가? - AI 혁명의 새로운 표준&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Model Context Protocol(MCP)은 AI 모델과 외부 세계 간의 통신을 표준화한 혁신적인 프로토콜입니다. 2024년 11월 앤트로픽에서 처음 발표된 MCP는 마치 USB-C가 다양한 하드웨어 장치를 연결하듯, AI와 외부 도구 및 데이터 소스를 쉽게 연결할 수 있게 해주는 통합 인터페이스입니다.&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;2025년 3월부터 'MCP' 검색량이 크게 상승한 것을 구글 트렌드를 통해 확인할 수 있으며, 특히 2025년 3월 27일 오픈AI의 CEO인 샘 알트만이 자사 제품 전반에 MCP 지원을 추가한다고 발표한 이후 더욱 주목받고 있습니다. 이는 MCP가 AI 산업의 단순한 유행이 아닌 장기적인 표준으로 자리잡고 있음을 시사합니다.&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;MCP의 핵심 가치는 다양성과 일관성에 있습니다. 개발자들은 각 AI 모델별로 다른 통합 방식을 학습할 필요 없이, 하나의 표준화된 방식으로 다양한 AI 모델과 통신할 수 있게 되었습니다. 이는 개발 시간과 비용을 획기적으로 줄이며, 보다 복잡하고 강력한 AI 애플리케이션 개발을 가능하게 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP의 작동 원리와 핵심 구성 요소&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 시스템은 크게 세 가지 핵심 구성 요소로 이루어져 있습니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. MCP 클라이언트&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 클라이언트는 MCP 서버로 컨텍스트를 요청하고 받는 역할을 하는 채팅 인터페이스나 에이전트 프로그램을 말합니다. 커서, 코파일럿, 윈드서프 등이 이에 해당합니다. 개발자는 이러한 클라이언트를 통해 AI 모델과 상호작용하면서 외부 도구의 기능을 활용할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. MCP 서버&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버는 각 Tool들(Arxiv에서 논문을 긁어오는, Reddit에 검색을 하는)에 대한 서버가 됩니다. 이는 AI 모델이 필요로 하는 외부 기능을 제공하는 백엔드 서비스로, 특정 API나 서비스에 접근하는 기능을 AI 모델에게 제공합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. MCP 프로토콜&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트와 서버 간의 통신 방식을 정의한 규칙과 표준으로, JSON 기반의 명확한 형식을 가지고 있습니다. 이 표준화된 인터페이스 덕분에 개발자는 다양한 AI 모델과 서비스를 쉽게 통합할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 단순한 API 호출 체계를 넘어서, AI 모델이 외부 세계와 상호작용하는 방식을 근본적으로 변화시킵니다. MCP는 단순히 도구를 연결하는 기술이 아니라, AI가 '지금 무엇을 해야 하는지'를 이해하고 실제로 일할 수 있게 도와주는 기반 인프라입니다. 이는 기존의 단방향 정보 제공을 넘어, AI와 외부 서비스 간의 양방향 상호작용을 가능하게 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP가 개발자에게 중요한 이유&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 개발자 생산성과 효율성을 극대화하는 획기적인 도구입니다. 다음과 같은 이유로 개발자에게 특히 중요합니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 개발 시간 단축&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP를 활용하면 개발 과정이 크게 단순화됩니다. 예를 들어, IntelliJ와 같은 IDE에서 MCP를 활용하면 개발이 훨씬 쉬워지며, 기술에 대한 숙련도가 낮더라도 기능을 효과적으로 구현할 수 있습니다. 이는 특히 새로운 기술이나 프레임워크를 배울 때 학습 곡선을 크게 완화시킵니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. API 통합 단순화&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 각 서비스마다 다른 API 호출 방식과 인증 메커니즘을 학습해야 했지만, MCP를 통해 표준화된 방식으로 다양한 서비스에 접근할 수 있게 되었습니다. 이는 마치 다양한 데이터베이스를 ORM으로 추상화하는 것과 유사한 효과를 제공합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 코드 재사용성 증가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 기반으로 개발된 코드는 다양한 AI 모델과 서비스에서 재사용할 수 있습니다. 이는 개발자가 여러 프로젝트 간에 코드를 효율적으로 공유하고 활용할 수 있게 해줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 생태계 확장성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 네이버 검색 API, 바이너리 분석 및 리버스 엔지니어링 도구, 비디오 편집, 데이터베이스 관리 등 다양한 분야에서 MCP 서버가 개발되고 있습니다. 이러한 생태계의 확장은 개발자가 새로운 기능을 쉽게 통합하고 활용할 수 있는 기회를 제공합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP의 실제 활용 사례와 예제 코드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 이론적 개념을 넘어 다양한 실제 응용 분야에서 활용되고 있습니다. 다음은 주요 활용 사례와 간단한 예제 코드입니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 코딩 보조 도구&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP와 IntelliJ를 함께 활용하면 코딩이 훨씬 쉬워집니다. 특히 Kotlin Multiplatform과 같이 익숙하지 않은 기술을 사용할 때도 MCP의 도움으로 충분히 기능을 완성할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# MCP를 활용한 코드 자동 생성 예제
from mcp_client import MCPClient

client = MCPClient()
client.connect(&quot;jetbrains-mcp-server&quot;)

# Kotlin Multiplatform으로 간단한 UI 컴포넌트 생성 요청
code = client.generate_code(
    language=&quot;kotlin&quot;,
    framework=&quot;multiplatform&quot;,
    description=&quot;Create a simple button component with click handler&quot;
)

print(code)  # 생성된 Kotlin Multiplatform 코드 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 데이터 검색 및 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 슬랙, 노션, Jira, DB 등과 직접 연결되어 회의 요약, 이슈 등록, 보고서 생성까지 스스로 처리할 수 있습니다. &quot;캠페인 요약해줘&quot;라고 말하기만 하면 AI가 CRM, 분석툴, 설문 데이터를 종합해서 자동 보고서를 만들어낼 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 여러 데이터 소스를 통합하여 보고서 생성하는 MCP 클라이언트 예제
from mcp_client import MCPClient

client = MCPClient()
# 필요한 MCP 서버들에 연결
client.connect([&quot;slack-mcp&quot;, &quot;notion-mcp&quot;, &quot;jira-mcp&quot;, &quot;mysql-mcp&quot;])

# 마케팅 캠페인 데이터 수집 및 분석
report = client.analyze(
    query=&quot;2025 Q1 마케팅 캠페인 성과를 요약하고 주요 KPI 달성률 차트 생성&quot;,
    data_sources=[&quot;slack&quot;, &quot;notion&quot;, &quot;jira&quot;, &quot;mysql&quot;],
    output_format=&quot;markdown&quot;
)

print(report)  # 생성된 마케팅 보고서 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 맞춤형 MCP 서버 개발&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인이 원하는 일을 하는 MCP 서버가 없다면, SDK를 사용해서 직접 만들어볼 수도 있습니다. 근본적으로, MCP 서버는 MCP의 스펙대로 함수를 노출하는, 백엔드에 있는 도구 API를 감싼 래퍼(Wrapper)입니다.&lt;/p&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;# FastMCP를 사용한 간단한 MCP 서버 예제
from fastmcp import FastMCP

app = FastMCP()

@app.tool(&quot;menu_recommender&quot;, &quot;사용자 선호도에 따라 오늘의 메뉴를 추천합니다.&quot;)
def recommend_menu(preferences: str):
    # 메뉴 추천 로직 구현
    if &quot;한식&quot; in preferences:
        return {&quot;menu&quot;: &quot;비빔밥&quot;, &quot;calories&quot;: 650}
    elif &quot;중식&quot; in preferences:
        return {&quot;menu&quot;: &quot;마파두부&quot;, &quot;calories&quot;: 580}
    else:
        return {&quot;menu&quot;: &quot;파스타&quot;, &quot;calories&quot;: 800}

@app.tool(&quot;weather_info&quot;, &quot;특정 위치의 현재 날씨 정보를 제공합니다.&quot;)
def get_weather(location: str):
    # 날씨 API 호출 및 데이터 반환
    # (실제 구현에서는 외부 날씨 API를 활용)
    return {
        &quot;location&quot;: location,
        &quot;temperature&quot;: 22,
        &quot;condition&quot;: &quot;맑음&quot;
    }

if __name__ == &quot;__main__&quot;:
    app.run(host=&quot;0.0.0.0&quot;, port=8000)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP 서버 직접 개발하기: 단계별 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버를 직접 개발하는 것은 생각보다 간단합니다. 다음 단계를 따라 자신만의 MCP 서버를 구축해 보세요:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1단계: 개발 환경 설정&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;# 가상 환경 생성 및 활성화
python -m venv mcp-env
source mcp-env/bin/activate  # Windows: mcp-env\Scripts\activate

# 필요한 패키지 설치
pip install fastmcp pydantic uvicorn
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2단계: MCP 서버 기본 구조 작성&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# app.py
from fastmcp import FastMCP
from pydantic import BaseModel
import uvicorn

app = FastMCP(title=&quot;My Custom MCP Server&quot;)

# 필요한 모델 정의
class SearchQuery(BaseModel):
    query: str
    limit: int = 10

class SearchResult(BaseModel):
    title: str
    url: str
    summary: str

# 도구 정의
@app.tool(&quot;custom_search&quot;, &quot;특정 주제에 대한 정보를 검색합니다.&quot;)
def search(query_params: SearchQuery) -&amp;gt; list[SearchResult]:
    # 실제 검색 로직 구현
    results = []
    # ... 검색 로직 ...
    return results

# 리소스 정의
@app.resource(&quot;documentation&quot;, &quot;API 사용 방법에 대한 문서&quot;)
def get_documentation():
    return {
        &quot;version&quot;: &quot;1.0&quot;,
        &quot;usage&quot;: &quot;이 MCP 서버는 다음과 같은 도구를 제공합니다...&quot;,
        &quot;examples&quot;: [
            {&quot;query&quot;: &quot;MCP 서버 개발 방법&quot;, &quot;limit&quot;: 5}
        ]
    }

if __name__ == &quot;__main__&quot;:
    uvicorn.run(app, host=&quot;0.0.0.0&quot;, port=8000)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3단계: MCP 서버 실행 및 테스트&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;tcl&quot;&gt;&lt;code&gt;# 서버 실행
python app.py

# 다른 터미널에서 API 테스트
curl -X POST http://localhost:8000/tools/list
curl -X POST http://localhost:8000/tools/call -H &quot;Content-Type: application/json&quot; -d '{&quot;name&quot;: &quot;custom_search&quot;, &quot;params&quot;: {&quot;query&quot;: &quot;MCP 프로토콜&quot;, &quot;limit&quot;: 5}}'
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4단계: MCP 클라이언트와 연결&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# test_client.py
from mcp_client import MCPClient

client = MCPClient()
client.connect(&quot;http://localhost:8000&quot;)

# 사용 가능한 도구 목록 확인
tools = client.list_tools()
print(f&quot;사용 가능한 도구: {tools}&quot;)

# 도구 사용
results = client.call_tool(
    name=&quot;custom_search&quot;,
    params={&quot;query&quot;: &quot;MCP 프로토콜&quot;, &quot;limit&quot;: 5}
)
print(f&quot;검색 결과: {results}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP vs 기존 AI 통합 방식: 무엇이 다른가?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 여러 측면에서 기존 AI 통합 방식과 차별화됩니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 플러그인 vs MCP&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 방식은 언어 모델에 '표준화된 플러그인 스펙(주로 오픈AI 스키마)'을 제공해서 제어하면서 외부의 API를 호출하게 하는 것이었습니다. 이 기법은 MCP와 비슷하지만, 그 성격이 '독점적'이기에, '제한적'이라는 근본적인 차이가 있습니다. MCP는 오픈 소스이며 특정 AI 모델 회사에 종속되지 않습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 랭체인 vs MCP&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;랭체인이 외부 도구를 에이전트의 코드에 통합하기 위해서 '개발자 중심의 표준'에 초점을 맞췄다면, MCP는 '모델 중심의 표준'을 만들었다는 차이가 있습니다. 특정한 도구에 맞게 에이전트의 코드를 작성하지 않아도, 모델이 쉽고 빠르게, 즉각적으로 여러 가지 도구들을 통합해서 사용할 수 있다는 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. RAG vs MCP&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLM에 컨텍스트, 즉 맥락 있는 데이터를 제공하는 또 다른 일반적인 방법은 검색기(Retriever)로 지식 베이스(문서, 임베딩)를 검색해 와서 상위의 결과를 프롬프트에 결합하고 LLM에 제공하는 것입니다. 이는 정보 검색에는 효과적이지만, MCP는 정보 검색을 넘어 실제 행동을 수행할 수 있는 도구를 AI에게 제공합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP 생태계의 현재와 미래&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 생태계는 빠르게 성장하고 있으며, 다음과 같은 방향으로 발전할 것으로 예상됩니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 서버 생태계 확장&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버 마켓플레이스가 등장할 가능성이 큽니다. 마치 앱스토어처럼, 전문화된 MCP 서버를 제공하는 생태계가 형성될 수 있습니다. 법률, 의료, 금융 등 각 분야별로 특화된 MCP 서버가, 무료부터 구독형까지 다양한 모델로 제공될 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. AI 개발의 민주화&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 AI 개발의 민주화로 이어질 수 있습니다. 기술적 지식이 없는 사람들도 호스트 앱을 통해 필요한 MCP 서버를 구독하고 조합하여 자신만의 AI 워크플로우를 구성할 수 있게 될 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 워크플로우 중심의 AI 경험&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쩌면 호스트 앱과 MCP 서버의 경계가 점점 흐려질 수도 있습니다. 사용자들은 특정 앱을 사용하는 것이 아니라, 필요에 따라 다양한 AI 워크플로우를 선택하게 될 수 있습니다. 이는 AI 활용 방식을 태스크 중심에서 워크플로우 중심으로 변화시킬 것입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;개발자를 위한 MCP 최적화 팁과 트릭&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP를 최대한 효율적으로 활용하기 위한 팁과 트릭을 소개합니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 명확한 도구 설명 제공&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버에서 도구를 정의할 때 명확하고 자세한 설명을 제공하세요. AI 모델은 이 설명을 바탕으로 도구의 사용 방법을 이해하고 적절하게 활용합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;@app.tool(
    name=&quot;file_analyzer&quot;,
    description=&quot;파일의 내용을 분석하여 주요 정보를 추출합니다.&quot;,
    parameters={
        &quot;file_path&quot;: &quot;분석할 파일의 경로&quot;,
        &quot;analysis_type&quot;: &quot;분석 유형 (text, code, data 중 선택)&quot;
    },
    returns=&quot;파일에서 추출한 주요 정보와 분석 결과&quot;
)
def analyze_file(file_path: str, analysis_type: str):
    # 파일 분석 로직 구현
    pass
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 에러 처리와 피드백 메커니즘&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버는 에러 상황을 명확하게 처리하고, 클라이언트에게 유용한 피드백을 제공해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;@app.tool(&quot;stock_price&quot;, &quot;주식 가격 정보를 제공합니다.&quot;)
def get_stock_price(ticker: str):
    try:
        # 주식 API 호출
        price = fetch_stock_price(ticker)
        return {&quot;ticker&quot;: ticker, &quot;price&quot;: price, &quot;currency&quot;: &quot;USD&quot;}
    except StockNotFoundException:
        return {
            &quot;error&quot;: &quot;stock_not_found&quot;,
            &quot;message&quot;: f&quot;'{ticker}' 주식을 찾을 수 없습니다. 올바른 주식 심볼인지 확인하세요.&quot;,
            &quot;suggestions&quot;: get_similar_tickers(ticker)
        }
    except RateLimitExceededException:
        return {
            &quot;error&quot;: &quot;rate_limit_exceeded&quot;,
            &quot;message&quot;: &quot;API 요청 한도를 초과했습니다. 잠시 후 다시 시도하세요.&quot;,
            &quot;retry_after&quot;: 60  # 초 단위
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 상태 유지 및 컨텍스트 관리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업을 수행할 때는 상태를 유지하고 컨텍스트를 관리하는 것이 중요합니다.&lt;/p&gt;
&lt;pre class=&quot;nix&quot;&gt;&lt;code&gt;from fastmcp import FastMCP, Context

app = FastMCP()

@app.tool(&quot;multi_step_analysis&quot;, &quot;여러 단계의 분석을 수행합니다.&quot;)
def analyze_in_steps(data: str, context: Context):
    # 현재 분석 단계 확인
    current_step = context.get(&quot;current_step&quot;, 1)
    
    if current_step == 1:
        # 첫 번째 분석 단계 수행
        preliminary_result = perform_preliminary_analysis(data)
        # 다음 단계를 위한 컨텍스트 업데이트
        context.update({
            &quot;current_step&quot;: 2,
            &quot;preliminary_result&quot;: preliminary_result
        })
        return {
            &quot;status&quot;: &quot;in_progress&quot;,
            &quot;message&quot;: &quot;첫 번째 분석 단계가 완료되었습니다. 계속하려면 같은 도구를 다시 호출하세요.&quot;,
            &quot;current_results&quot;: preliminary_result
        }
    
    elif current_step == 2:
        # 두 번째 분석 단계 수행
        preliminary_result = context.get(&quot;preliminary_result&quot;)
        final_result = perform_final_analysis(data, preliminary_result)
        # 컨텍스트 초기화
        context.clear()
        return {
            &quot;status&quot;: &quot;completed&quot;,
            &quot;message&quot;: &quot;분석이 완료되었습니다.&quot;,
            &quot;results&quot;: final_result
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문(FAQ)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Q1: MCP는 어떤 언어로 개발할 수 있나요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버는 Python, JavaScript, Java 등 다양한 언어로 개발할 수 있습니다. 현재 가장 많이 사용되는 언어는 Python으로, FastMCP와 같은 프레임워크를 사용하면 쉽게 MCP 서버를 개발할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Q2: MCP를 사용하기 위해 필요한 기술적 지식은 무엇인가요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 프로그래밍 지식과 API에 대한 이해가 있으면 MCP를 사용할 수 있습니다. MCP 클라이언트만 사용하려면 프로그래밍 지식이 필요 없지만, MCP 서버를 개발하려면 웹 서버 개발과 관련된 지식이 필요합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Q3: MCP와 기존 AI 통합 솔루션의 성능 차이는 어떻게 되나요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 표준화된 인터페이스를 제공하기 때문에 개발 효율성 면에서 큰 장점이 있습니다. 성능 면에서는 기존 솔루션과 큰 차이가 없지만, 확장성과 호환성 측면에서 우수합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Q4: 대표적인 MCP 클라이언트와 서버는 무엇이 있나요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트: Claude Desktop, Cursor, Continue, Windsurf 등 서버: Zapier MCP, GitHub MCP, Obsidian MCP, Neo4j MCP 등 다양한 서비스와 도구를 위한 MCP 서버가 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Q5: MCP는 오픈소스인가요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 2024년 11월 '앤트로픽'이 발표한 오픈 소스 프로토콜입니다. 누구나 MCP 표준에 따라 자신만의 서버와 클라이언트를 개발하고 공유할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론: MCP로 개발 패러다임의 재정의&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 AI 모델과 외부 세계의 통합 방식을 근본적으로 바꾸는 혁신적인 기술입니다. 개발자에게는 코드 작성 시간을 단축하고, 다양한 서비스와의 통합을 간소화하며, 보다 강력한 AI 애플리케이션을 구축할 수 있는 기회를 제공합니다.&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;AI에 수많은 앱이 연결되는 세상이 머지않았습니다. USB-C가 하드웨어 연결의 표준이 된 것처럼, MCP는 AI와 외부 세계의 연결을 표준화하는 핵심 프로토콜로 자리잡을 것입니다.&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;앞으로는 도구를 다루는 능력보다 '일의 흐름'을 설계하는 능력이 더 중요해질 수 있습니다. MCP가 가져올 미래는 AI가 단순히 질문에 답하는 도구를 넘어, 우리의 일상과 업무에 깊이 통합되어 실질적인 작업을 수행하는 동반자로 진화하는 것입니다.&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;이제 MCP를 통해 AI는 외부 세계와 더 원활하게 소통하고, 더 폭넓은 작업을 수행할 수 있게 되었습니다. 개발자로서 이러한 변화에 발맞춰 MCP를 활용한다면, 생산성을 크게 향상시키고 더 강력한 애플리케이션을 만들 수 있을 것입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MCP 활용을 위한 다음 단계&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP를 시작하기 위한 첫 번째 단계는 MCP 클라이언트를 설치하고 기존 MCP 서버들과 연결해보는 것입니다. 가장 인기 있는 MCP 클라이언트 중 하나인 Claude Desktop App이나 Cursor를 설치한 후, 다양한 MCP 서버들을 탐색해보세요. 그 후에는 자신만의 요구에 맞는 MCP 서버를 개발하여 AI의 능력을 확장해보는 것도 좋은 방법입니다.&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;개발자 커뮤니티는 이미 MCP 생태계를 풍부하게 만들기 위해 다양한 MCP 서버들을 개발하고 공유하고 있습니다. GitHub와 같은 플랫폼에서 &quot;awesome-mcp-servers&quot;와 같은 저장소를 통해 다양한 MCP 서버 프로젝트를 찾아볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로, MCP는 계속해서 발전하는 기술입니다. 앤트로픽, 오픈AI와 같은 주요 AI 기업들의 MCP 관련 업데이트를 지속적으로 확인하고, 커뮤니티에 참여하여 최신 개발 동향을 파악하는 것이 중요합니다.&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;MCP는 단순한 기술적 혁신을 넘어, AI와 인간의 협업 방식을 근본적으로 변화시키는 패러다임 전환입니다. 이 흥미로운 여정에 함께하며, AI의 새로운 가능성을 탐색해보세요!&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 블로그 포스트가 MCP에 대한 이해를 돕고, 여러분의 개발 여정에 도움이 되기를 바랍니다. 질문이나 의견이 있으시면 댓글로 남겨주세요. 함께 AI의 미래를 만들어 나갑시다!&lt;/p&gt;</description>
      <category> Development/Artificial Intelligence</category>
      <category>ChatGPT</category>
      <category>Claude</category>
      <category>langchain</category>
      <category>LLM</category>
      <category>MCP</category>
      <category>mcp서버</category>
      <category>modelcontextprotocol</category>
      <category>RAG</category>
      <category>랭체인</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/56</guid>
      <comments>https://devloo.tistory.com/entry/MCP-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-AI%EC%99%80-%EC%84%B8%EC%83%81%EC%9D%84-%EC%97%B0%EA%B2%B0%ED%95%98%EB%8A%94-%EC%83%88%EB%A1%9C%EC%9A%B4-%ED%91%9C%EC%A4%80#entry56comment</comments>
      <pubDate>Mon, 5 May 2025 21:07:09 +0900</pubDate>
    </item>
    <item>
      <title>[Claude Code] 클로드 코드: 엘리트 개발자들이 주목하는 AI 개발 파트너</title>
      <link>https://devloo.tistory.com/entry/Claude-Code-%EC%97%98%EB%A6%AC%ED%8A%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%9D%B4-%EC%A3%BC%EB%AA%A9%ED%95%98%EB%8A%94-AI-%EA%B0%9C%EB%B0%9C-%ED%8C%8C%ED%8A%B8%EB%84%88</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3840&quot; data-origin-height=&quot;2160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxXHo/btsNunz6txg/NThRgRW1eZyGHdddbqF4E0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxXHo/btsNunz6txg/NThRgRW1eZyGHdddbqF4E0/img.png&quot; data-alt=&quot;Claude Code에 대해&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxXHo/btsNunz6txg/NThRgRW1eZyGHdddbqF4E0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkxXHo%2FbtsNunz6txg%2FNThRgRW1eZyGHdddbqF4E0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3840&quot; height=&quot;2160&quot; data-origin-width=&quot;3840&quot; data-origin-height=&quot;2160&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Claude Code에 대해&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;article&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 터미널 환경에 자연스럽게 통합되어 전체 코드베이스를 이해하고, 수정하며, 개발자의 워크플로를 근본적으로 개선할 수 있는 AI 도구입니다. 기존 개발 방식은 유지하면서도 생산성과 코드 품질을 동시에 끌어올릴 수 있는 이 도구는, 특히 복잡한 프로젝트나 기술 부채가 쌓인 환경에서 큰 효과를 발휘합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기술 부채로 인한 비효율, AI가 해결할 수 있을까?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 개발팀이 스타트업 환경에서 빠르게 방향을 전환하며 기능을 추가하고 제거하는 과정을 겪습니다. 이러한 피벗은 종종 코드베이스에 부작용을 남기며, 일관되지 않은 아키텍처, 부족한 문서, 복잡한 의존성을 초래합니다. 이런 상황에서는 새로운 기능 추가보다 기존 코드 이해에 소요되는 시간이 더 클 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 이런 문제를 정확히 해결합니다. 프로젝트의 전체 구조를 스캔하고, 관련 모듈 간의 연관성을 파악하며, 필요한 경우 직접 리팩토링까지 수행할 수 있어, 기술 부채로 인한 생산성 저하를 효과적으로 줄여줍니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기존 AI 코딩 도구의 한계&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 AI 도구들이 여전히 대화형 챗봇 형식에 머무르고 있으며, 실제 개발 흐름에는 자연스럽게 통합되지 않습니다. IDE나 터미널 환경과 분리되어 있어, 문맥이 단절된 상태에서 질문과 답변이 오갑니다. 이는 실제 코드와 제안 사이의 괴리를 만들어냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 이러한 한계를 명확히 인식하고, 기존의 워크플로를 바꾸지 않으면서도 개발 환경에 AI를 자연스럽게 녹여냅니다. 사용자는 따로 문맥을 설명할 필요 없이 프로젝트 디렉터리에서 Claude를 실행하면, 바로 코드를 이해하고 적절한 대응을 시작할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Claude Code는 어떻게 작동하는가?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치와 사용은 매우 간단합니다. Node.js 18 이상이 설치된 상태에서 다음 명령어 한 줄이면 됩니다:&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 프로젝트 디렉터리로 이동해 &lt;code&gt;claude&lt;/code&gt; 명령을 입력하면, Claude는 코드베이스를 스캔하고 구조와 의존성, 주요 모듈을 파악합니다. 질문에 따라 관련 코드를 분석하고 구체적인 답변을 제공합니다. 예를 들어 인증 시스템의 작동 원리를 물었을 때, Claude는 실제 구현을 기반으로 전체 흐름을 설명하고, 숨겨진 보안 이슈까지 짚어낼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 단순히 질문에 응답하는 수준을 넘어서, 코드 수정, 테스트 실행, 커밋 및 PR 생성 등 실제 개발 작업 전반을 수행합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Claude Code의 세 가지 사용 모드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 코드 탐색기 (Code Archaeologist)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드베이스가 커질수록 기존 기능의 흐름을 이해하는 데 시간이 오래 걸립니다. grep으로 검색해도 연결된 로직을 파악하기 어렵고, 담당자가 바뀌었거나 문서가 없을 경우, 그 과정은 더 복잡해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 파일 간 연결, 함수 호출 흐름, 변경 이력까지 종합적으로 분석해 줍니다. 단순히 &quot;어디서 이 기능이 구현되어 있지?&quot; 수준을 넘어, &quot;왜 이렇게 구현되었는지&quot;, &quot;어떤 의존성을 고려해야 하는지&quot;까지 안내해주는 AI 기반 문서 탐색 도우미입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 지능형 페어 프로그래머 (Pair Programmer)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 언제든지 호출할 수 있는 가상 페어 파트너입니다. 복잡한 로직을 함께 고민하거나, 함수 분해 및 아키텍처 구조 변경을 계획할 때, Claude는 다양한 시각을 제시하고, 테스트 전략이나 예외 케이스까지 함께 고려해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 단순한 코드 리뷰를 넘어서, 구조적 개선 제안과 리팩터링 방향에 대해 대화를 나눌 수 있습니다. 특히 '생각해줘', '고려해봐'와 같은 지시어를 활용하면 Claude는 단순 응답 대신 심층적인 분석을 수행합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 구현 가속기 (Implementation Accelerator)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 이해하고 구조를 설계한 이후 Claude는 실질적인 구현까지 맡을 수 있습니다. 단순한 수정이 아니라, 관련된 모듈 간 관계를 고려한 전체적인 변경이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 API 구조 변경, 입력값 검증 추가, 비동기 로직 오류 수정 등 일반적으로 수 시간이 걸리는 작업을 빠르게 완료할 수 있으며, Claude는 이를 자동으로 커밋하고 PR까지 준비합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실제 개발 워크플로까지 확장되는 기능&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 Git, 테스트, 빌드, 배포 등의 워크플로도 지원합니다. 이를 통해 사용자는 자연어로 다음과 같은 작업을 수행할 수 있습니다:&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;claude &quot;현재 변경사항을 커밋하고 설명 메시지를 추가해줘&quot;
claude &quot;방금 완료한 기능으로 PR 생성해줘&quot;
claude &quot;main 브랜치 기준으로 리베이스하고 충돌 해결해줘&quot;
claude &quot;auth 모듈 테스트 실행하고 실패 원인 찾아줘&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 단순 자동화가 아니라, 실제 컨텍스트 기반 판단과 작업 수행을 포함한 '워크플로 지능화'로 볼 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;보안 모델: 사용자의 통제권을 유지한 설계&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 코드베이스에 접근하고 수정할 수 있지만, 모든 작업은 사용자의 명시적 승인 하에 진행됩니다. 세 가지 보안 계층으로 구성됩니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;읽기 작업: 별도 승인 없이 실행&lt;/li&gt;
&lt;li&gt;터미널 명령어 실행: 사용자 승인 필요&lt;/li&gt;
&lt;li&gt;파일 수정: 세션 단위 승인 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 Claude는 로컬 환경에서 실행되며, 외부 서버에 코드를 전송하지 않고, Anthropic API와의 직접 연결을 통해 통신합니다. 프롬프트 주입 공격에 대한 방어 메커니즘도 적용되어 있어 보안적으로도 신뢰할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;비용 및 효율성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 토큰 기반 요금제로 동작하며, 개발자 1인 기준 하루 평균 약 $6의 비용이 발생합니다. 대부분의 사용자는 하루 $12 이하로 운영이 가능하며, 하루 30분만 절약해도 충분히 ROI를 확보할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 연봉이 높은 개발 조직, 반복적인 유지보수 작업이 많은 팀에서는 비용 대비 효과가 더욱 뚜렷하게 나타납니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;팀 온보딩과 지식 전파까지 확장되는 활용성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 단순한 코드 분석을 넘어 팀 온보딩 도구로도 강력하게 작동합니다. &lt;code&gt;/init&lt;/code&gt; 명령어를 실행하면, 프로젝트의 구조, 주요 기능, 공통 워크플로 등을 포함한 &lt;code&gt;CLAUDE.md&lt;/code&gt; 문서를 자동으로 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 새로운 팀원에게 정적인 문서를 제공하는 것보다 훨씬 효율적이며, Claude와 직접 대화를 통해 실시간으로 시스템을 탐색할 수도 있어 학습과 탐색 속도가 크게 향상됩니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Claude Code를 효과적으로 활용하기 위한 3가지 접근&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;작업 흐름 중심 사고&lt;/b&gt;: 단일 함수나 컴포넌트가 아닌 전체 작업 목표를 공유하면 Claude가 더 나은 도움을 줄 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코드 생성이 아닌 문제 해결 요청&lt;/b&gt;: 단순한 코드 출력을 요구하기보다는 구조, 설계, 전략적인 접근을 요청해 보세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제 발생 시점이 아닌 시작 단계에서 사용&lt;/b&gt;: 기능 구현 초기부터 Claude를 활용하면 더 많은 시간을 절약할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시작 방법: 5분 설정 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Node.js 18+ 설치&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt; 실행&lt;/li&gt;
&lt;li&gt;프로젝트 폴더로 이동 후 &lt;code&gt;claude&lt;/code&gt; 명령어 실행&lt;/li&gt;
&lt;li&gt;1회 인증 후 사용 시작&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추천 명령어:&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;claude &quot;이 프로젝트 요약해줘&quot;
claude /init
claude commit&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;마치며: AI가 바꾸는 개발의 미래&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 단순한 자동완성 AI를 넘어서, 전체 개발 프로세스를 지원하는 &lt;b&gt;AI 기반 개발 에이전트&lt;/b&gt;로 진화하고 있습니다. 코드 이해, 문제 분석, 작업 실행까지 아우르는 이 도구는, 이미 많은 개발자와 팀에게 실질적인 생산성 향상을 제공하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변화를 먼저 받아들이고 적응한 팀이 곧 개발 문화의 새로운 기준이 될 것입니다.&lt;/p&gt;
&lt;/article&gt;</description>
      <category> Development/Artificial Intelligence</category>
      <category>AI</category>
      <category>Artificial Intelligence</category>
      <category>Claude</category>
      <category>claude code</category>
      <category>tech debt</category>
      <category>기술 부채</category>
      <category>클로드코드</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/54</guid>
      <comments>https://devloo.tistory.com/entry/Claude-Code-%EC%97%98%EB%A6%AC%ED%8A%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%9D%B4-%EC%A3%BC%EB%AA%A9%ED%95%98%EB%8A%94-AI-%EA%B0%9C%EB%B0%9C-%ED%8C%8C%ED%8A%B8%EB%84%88#entry54comment</comments>
      <pubDate>Tue, 22 Apr 2025 10:03:37 +0900</pubDate>
    </item>
    <item>
      <title>[MCP] 요즘 자꾸 들리는 MCP? 이 글 하나면 이해 끝 !</title>
      <link>https://devloo.tistory.com/entry/MCP-%EC%9A%94%EC%A6%98-%EC%9E%90%EA%BE%B8-%EB%93%A4%EB%A6%AC%EB%8A%94-MCP-%EC%9D%B4-%EA%B8%80-%ED%95%98%EB%82%98%EB%A9%B4-%EC%9D%B4%ED%95%B4-%EB%81%9D</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;mcp 이해하기.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9uFzq/btsNmKIgTCy/fhKZBCqGszQWB3ZO7uEkD1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9uFzq/btsNmKIgTCy/fhKZBCqGszQWB3ZO7uEkD1/img.webp&quot; data-alt=&quot;MCP 아주 쉽게 이해하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9uFzq/btsNmKIgTCy/fhKZBCqGszQWB3ZO7uEkD1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9uFzq%2FbtsNmKIgTCy%2FfhKZBCqGszQWB3ZO7uEkD1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;512&quot; data-filename=&quot;mcp 이해하기.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MCP 아주 쉽게 이해하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요!  &lt;br /&gt;요즘 AI 쪽 관심 있는 분들이라면 &lt;b&gt;&quot;MCP&quot;&lt;/b&gt;라는 말을 한 번쯤은 들어보셨을 거예요.&lt;br /&gt;하지만 도대체 이게 &lt;b&gt;뭘 의미하는지&lt;/b&gt;, &lt;b&gt;왜 중요한 건지&lt;/b&gt;, 정확히 설명해주는 글은 드물죠.&lt;br /&gt;기술적인 설명은 어렵고, 그냥 넘기자니 괜히 뒤처지는 것 같고&amp;hellip;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그래서 준비했습니다. &lt;/b&gt;&lt;b&gt;누구나 이해할 수 있도록, 최대한 쉬운 말로!&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  MCP가 뭐길래 다들 떠들까?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;Model Context Protocol&amp;rdquo;의 약자예요&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI가 다양한 툴이나 데이터를 실시간으로 &lt;b&gt;연결해서 쓸 수 있게 해주는 표준화된 규약&lt;/b&gt;이에요.&lt;/li&gt;
&lt;li&gt;복잡하게 들릴 수 있지만, 사실 이건 우리가 매일 쓰는 &lt;b&gt;USB-C 포트&lt;/b&gt;랑 비슷한 개념이에요.&lt;/li&gt;
&lt;li&gt;AI가 &lt;b&gt;어떤 도구든 쉽게 연결해서 쓸 수 있는 일종의 &amp;lsquo;범용 어댑터&amp;rsquo;&lt;/b&gt;를 만들어주는 기술입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  이전의 AI는 똑똑하지만 &amp;lsquo;갇혀 있었어요&amp;rsquo;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정리하면 이렇게 볼 수 있어요:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;과거 AI: 배운 건 많지만, 최신 정보는 몰라요.
예: 2021년에 훈련된 모델은 그 이후 일어난 일을 몰라요.
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들어 ChatGPT나 Claude 같은 모델은 정말 똑똑하지만,&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실시간 주식 가격, 날씨, 파일 검색&lt;/b&gt; 같은 일은 할 수 없었어요.&lt;/li&gt;
&lt;li&gt;왜냐면 &lt;b&gt;외부 세계와 연결된 능력이 없었기 때문&lt;/b&gt;이죠.&lt;/li&gt;
&lt;li&gt;개발자들은 이를 해결하기 위해 일일이 플러그인이나 코드로 붙여야 했고, AI마다 방식도 달라서 정말 비효율적이었어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 예전에는 전자기기마다 &lt;b&gt;충전기 규격이 다 달라서&lt;/b&gt; 집에 충전기만 5개였던 시절처럼요.  &lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  MCP = AI의 USB-C 포트&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;진짜 중요한 변화가 여기서 시작돼요&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;MCP는 AI가 다양한 툴들과 공통된 방식으로 통신&lt;/b&gt;할 수 있게 해주는 규약이에요.&lt;/li&gt;
&lt;li&gt;마치 &lt;b&gt;모든 전자기기가 USB-C로 연결되는 것처럼&lt;/b&gt;, AI도 이제 Slack이든 구글 드라이브든, 하나의 방법으로 접근할 수 있어요.&lt;/li&gt;
&lt;li&gt;이 표준이 생기면서 &lt;b&gt;복잡한 중간 코드가 필요 없어졌고&lt;/b&gt;, 개발자도, 사용자도 훨씬 쉽게 다양한 도구를 연결할 수 있게 됐어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;⚙️ MCP는 어떻게 작동하나요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클라이언트-서버 모델로 보면 쉬워요:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;AI 앱(예: Claude, Cursor, Windsurf)&lt;/b&gt; &amp;rarr; MCP 클라이언트 역할&lt;/li&gt;
&lt;li&gt;&lt;b&gt;도구나 기능(예: 파일 시스템, Slack, 날씨 API 등)&lt;/b&gt; &amp;rarr; MCP 서버 역할&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 AI는 MCP 서버에게 이렇게 말해요:&lt;br /&gt;&lt;i&gt;&amp;ldquo;당신은 무슨 일을 할 수 있나요?&amp;rdquo;&lt;/i&gt;&lt;br /&gt;그러면 서버가 대답하죠:&lt;br /&gt;&lt;i&gt;&amp;ldquo;나는 파일 검색, 쓰기, 삭제, 복사 같은 걸 할 수 있어요.&amp;rdquo;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 AI는 &lt;b&gt;즉석에서 도구의 능력을 파악하고&lt;/b&gt;,&lt;br /&gt;&lt;b&gt;그에 맞게 동작을 바꿔가며 쓸 수 있게 되는 거예요.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  왜 MCP가 그렇게 중요한가요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  1. 누구나 쉽게 AI 도구를 '플러그 앤 플레이'할 수 있음&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Google Drive용 MCP 서버가 하나 있으면? &amp;rarr; Claude, Cursor, Windsurf 전부 &lt;b&gt;바로 연결 가능&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Spotify 제어 MCP 서버가 있다면? &amp;rarr; AI가 &amp;ldquo;다음 곡 재생&amp;rdquo;이라고 요청 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 번 만든 서버는 어디서든 재사용 가능&lt;/b&gt;해요. 이게 바로 MCP가 혁신적인 이유예요.&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;b&gt;  2. AI가 실시간 정보 &amp;amp; 작업을 할 수 있어요&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;erlang-repl&quot;&gt;&lt;code&gt;과거: &quot;지금 날씨는 어때?&quot; &amp;rarr; &quot;몰라요...&quot;
현재: &quot;파리 날씨 어때?&quot; &amp;rarr; 날씨 API 연결해서 실시간 확인!
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;할 일 목록 등록, 주식 시세 확인, Slack에 메시지 전송 등&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AI가 직접 실시간으로 행동&lt;/b&gt;할 수 있어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  3. 표준화 덕분에 개발도 쉽고, 사용도 쉬워요&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이전: 기능 하나당 AI마다 다르게 구현해야 했음&lt;/li&gt;
&lt;li&gt;지금: &lt;b&gt;한 번 만든 MCP 서버로 모든 AI에 적용 가능&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  4. 사용자 통제와 보안도 우선으로 설계됨&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 작업은 &lt;b&gt;사용자 허락을 받아야&lt;/b&gt; 실행돼요.&lt;/li&gt;
&lt;li&gt;예: 파일 삭제 시 &amp;rarr; &quot;삭제할까요?&quot;라는 알림&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기록 투명성&lt;/b&gt;, &lt;b&gt;승인 기반 행동&lt;/b&gt; = 신뢰 가능한 AI&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  실생활에선 어떻게 쓰고 있을까요?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  Claude for Desktop&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로컬 파일 시스템 검색, 내용 요약, 새 파일 생성 등 가능&lt;/li&gt;
&lt;li&gt;실제로 Claude가 내 컴퓨터 파일을 탐색하고 정리해줘요&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;zwj;  개발자용 툴 (Cursor, Windsurf)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GitHub, 코드 검색, DB 연결로 AI가 코드 컨텍스트를 이해&lt;/li&gt;
&lt;li&gt;&amp;ldquo;이 함수 어디서 쓰였는지?&amp;rdquo; &amp;rarr; 바로 찾아줌&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;zwj;  기업 내 도구 연동&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Slack, Google Drive, Notion 등 연동해 AI가 요약, 회의록 생성, 일정 조율&lt;/li&gt;
&lt;li&gt;Block(구 Square) 같은 회사들은 이미 내부 업무 자동화에 사용 중&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  자동화 플랫폼 (n8n 등)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커뮤니티 MCP 서버를 조합해 자동화 플로우 구현&lt;/li&gt;
&lt;li&gt;PDF 분석 &amp;rarr; 이메일 전송 &amp;rarr; 데이터 저장까지 자동화 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  MCP의 미래는?&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금은 주로 데스크탑 중심 &amp;rarr; 앞으로는 클라우드 기반 AI에서도 사용 가능&lt;/li&gt;
&lt;li&gt;멀티 도구를 AI가 스스로 조합하는 &lt;b&gt;AI 에이전트 시대&lt;/b&gt;로 진입 중&lt;/li&gt;
&lt;li&gt;오픈소스 MCP 서버 생태계도 커지는 중 &amp;rarr; 코딩 몰라도 AI 도우미 구성 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  나도 써볼 수 있을까?&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Claude for Desktop&lt;/b&gt; 설치&lt;/li&gt;
&lt;li&gt;GitHub에서 &lt;b&gt;MCP 서버&lt;/b&gt; 다운로드&lt;/li&gt;
&lt;li&gt;파일 시스템, 웹 검색, 이메일 등 연동 테스트&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은 Windsurf 같은 코딩툴 설정 &amp;rarr; MCP 연동만 해도 다양한 기능이 열려요!&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;✨ 마무리하며: 이제 AI는 진짜 도우미가 된다&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP는 AI와 현실을 연결하는 다리입니다.&lt;/b&gt;&lt;br /&gt;그리고 이 다리는 &lt;b&gt;누구에게나 열려 있어요.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내가 쓰는 도구와 AI를 쉽게 연결&lt;/li&gt;
&lt;li&gt;내가 원하는 방식으로 확장 가능&lt;/li&gt;
&lt;li&gt;내 손으로 AI 도우미를 &amp;lsquo;조립&amp;rsquo;하는 시대&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;복잡할 필요 없습니다.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;잘 만든 표준 하나면 충분하니까요.&lt;/b&gt;&lt;/p&gt;</description>
      <category> Development/Artificial Intelligence</category>
      <category>AI</category>
      <category>Artificial Intelligence</category>
      <category>Chat GPT</category>
      <category>Claude</category>
      <category>Claude AI</category>
      <category>GPT</category>
      <category>MCP</category>
      <category>mcp 쉽게 이해하기</category>
      <category>mcp의 미래는</category>
      <category>model context protocol</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/53</guid>
      <comments>https://devloo.tistory.com/entry/MCP-%EC%9A%94%EC%A6%98-%EC%9E%90%EA%BE%B8-%EB%93%A4%EB%A6%AC%EB%8A%94-MCP-%EC%9D%B4-%EA%B8%80-%ED%95%98%EB%82%98%EB%A9%B4-%EC%9D%B4%ED%95%B4-%EB%81%9D#entry53comment</comments>
      <pubDate>Tue, 15 Apr 2025 17:43:44 +0900</pubDate>
    </item>
    <item>
      <title>이젠 ChatGPT도 구시대 유물? 지금 바로 써야 할 10배 더 뛰어난 대안 툴[Claude, Cursor, Groq, V0, Gemini, Perplexity, Replit]</title>
      <link>https://devloo.tistory.com/entry/%EC%9D%B4%EC%A0%A0-ChatGPT%EB%8F%84-%EA%B5%AC%EC%8B%9C%EB%8C%80-%EC%9C%A0%EB%AC%BC-%EC%A7%80%EA%B8%88-%EB%B0%94%EB%A1%9C-%EC%8D%A8%EC%95%BC-%ED%95%A0-10%EB%B0%B0-%EB%8D%94-%EB%9B%B0%EC%96%B4%EB%82%9C-%EB%8C%80%EC%95%88-%ED%88%B4Claude-Cursor-Groq-V0-Gemini-Perplexity-Replit</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z3wWT/btsL5BFwl8O/jmKinEI6Rb33aFPS4KRq11/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z3wWT/btsL5BFwl8O/jmKinEI6Rb33aFPS4KRq11/img.jpg&quot; data-alt=&quot;ChatGPT의 대안 툴들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z3wWT/btsL5BFwl8O/jmKinEI6Rb33aFPS4KRq11/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz3wWT%2FbtsL5BFwl8O%2FjmKinEI6Rb33aFPS4KRq11%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1548&quot; height=&quot;776&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;776&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ChatGPT의 대안 툴들&lt;/figcaption&gt;
&lt;/figure&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;2022년에 ChatGPT가 처음 출시되었을 때, 이미 IT 업계에서 10년 가까이 경험을 쌓아온 제게도 그 등장은 상당히 충격적이었습니다. 늘 새로운 기술이 시장에 나오는 걸 봐 왔지만, ChatGPT만큼 전 세계적으로 빠르게 확산된 사례는 흔치 않았으니까요. 게다가 출시 5일 만에 100만 명의 사용자를 달성했다는 기록은 업계에서도 처음 듣는 엄청난 수치였습니다.&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;당시 저는 업무 문서 작성이나 간단한 프로토타이핑을 검증할 때 ChatGPT를 적극적으로 활용했습니다. 답변 정확도와 유연성이 놀라울 정도로 뛰어나서 &amp;ldquo;정말 새 시대가 열렸구나&amp;rdquo;라는 생각을 했습니다. 그런데 2년이 지난 지금, 저는 ChatGPT를 이전만큼 자주 사용하지 않게 되었습니다. 특정 질문에 대해 만족스럽지 않은 답변이 이어지기도 하고, 무엇보다 이제는 더 나은 기능이나 성능을 제공하는 다른 AI 툴들이 많이 나왔다는 사실이 큽니다.&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;솔직히 지난 두 달 정도는 ChatGPT를 거의 켜보지 않았습니다. &amp;ldquo;굳이 ChatGPT를 고집하지 않아도 되겠다&amp;rdquo;라는 생각이 들 정도로 대안이 많아졌거든요. 그래서 이번 글에서는 무료 버전을 기준으로, ChatGPT를 대체할 수 있는 다양한 AI 툴들을 소개해 드리려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;i&gt;(참고: 유료 버전 ChatGPT의 최신 모델을 잘 사용하고 계시다면 그대로 쓰셔도 좋습니다. 이 글은 어디까지나 무료 버전 기반 비교라는 점 양해 부탁드립니다.)&lt;/i&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Claude&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BHrKH/btsL4KJVmr7/hr74n9jCxkTBhRGLJmhUuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BHrKH/btsL4KJVmr7/hr74n9jCxkTBhRGLJmhUuk/img.png&quot; data-alt=&quot;Claude AI의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BHrKH/btsL4KJVmr7/hr74n9jCxkTBhRGLJmhUuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBHrKH%2FbtsL4KJVmr7%2Fhr74n9jCxkTBhRGLJmhUuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;495&quot; height=&quot;372&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Claude AI의 로고&lt;/figcaption&gt;
&lt;/figure&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;b&gt;Anthropic&lt;/b&gt;에서 만든 생성형 AI 모델, &lt;b&gt;Claude&lt;/b&gt;입니다. ChatGPT와 달리 무료 버전에서도 (제한이 있긴 하지만) 자사의 최고 모델을 어느 정도 활용할 수 있는 게 특징입니다.&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;제 개인적인 사용 경험을 말씀드리자면, Claude와 대화를 나눌 때는 사람과 대화를 하는 듯한 인상을 받았습니다. 물론 ChatGPT처럼 단어 예측에 기반한 모델이지만, 맥락을 이해하고 공감하는 느낌이 훨씬 더 자연스러웠어요.&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;논리적 추론, 문제 해결, 코딩 스킬이 특히 뛰어나서 글쓰기나 프로그래밍 작업에 탁월합니다. 실제로 코딩 질문을 던져보면 ChatGPT보다 훨씬 높은 정확도로 답변해줘서 감탄했죠.&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;글쓰기에서는 ChatGPT처럼 과하게 귀엽고 친근하려고 애쓰지 않는 담백함이 마음에 들었습니다.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료, 월 $20&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Cursor&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qy4Uw/btsL5DDk8wF/oh8eTdABwEoAZPsfo6gAT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qy4Uw/btsL5DDk8wF/oh8eTdABwEoAZPsfo6gAT1/img.png&quot; data-alt=&quot;Cursor AI의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qy4Uw/btsL5DDk8wF/oh8eTdABwEoAZPsfo6gAT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQy4Uw%2FbtsL5DDk8wF%2Foh8eTdABwEoAZPsfo6gAT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;524&quot; height=&quot;349&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Cursor AI의 로고&lt;/figcaption&gt;
&lt;/figure&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;b&gt;Cursor&lt;/b&gt;는 AI 기반 코드 편집기입니다. OpenAI 모델과 Claude 모델을 모두 연결해 쓸 수 있는데, 특히 &lt;b&gt;Claude 3.5 Sonnet&lt;/b&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;코딩 경험이 전혀 없는 사람도 Cursor와 Claude를 조합해 풀스택 앱이나 웹사이트를 만들었다는 사례가 종종 들리는데, 저도 직접 시도해본 결과 꽤나 만족스러웠습니다. 예를 들어, 투두 리스트에 뽀모도로 타이머와 시간 추적 기능을 접목한 앱을 순식간에 구현해낼 수 있었어요.&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;개발 속도를 혁신적으로 높이고 싶다면 Cursor가 좋은 대안이 될 겁니다.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료, 월 $20&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Groq&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4801&quot; data-origin-height=&quot;2508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cq1030/btsL30GLn9C/eeQxHL5tyWrywcgZLHOIa0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cq1030/btsL30GLn9C/eeQxHL5tyWrywcgZLHOIa0/img.webp&quot; data-alt=&quot;Groq AI의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cq1030/btsL30GLn9C/eeQxHL5tyWrywcgZLHOIa0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcq1030%2FbtsL30GLn9C%2FeeQxHL5tyWrywcgZLHOIa0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;523&quot; height=&quot;273&quot; data-origin-width=&quot;4801&quot; data-origin-height=&quot;2508&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Groq AI의 로고&lt;/figcaption&gt;
&lt;/figure&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;b&gt;Groq&lt;/b&gt;는 AI 추론 칩을 만드는 기업으로, 이 칩을 사용하면 LLM 모델의 동작 속도가 정말 빠르다고 합니다. 정확한 기술 사양은 저도 다 모르지만, 직접 써보니 &amp;ldquo;이게 정말 이렇게 빨라?&amp;rdquo; 싶을 정도로 빠르더군요.&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;제가 Llama 3.1(8B 파라미터 버전)을 돌려봤을 때 초당 1200토큰 정도 처리하는 걸 확인했습니다. 오픈소스 Llama 모델을 여러 버전 중에서 골라 쓸 수 있는데, 가장 최신인 Llama 3.1 70B 모델도 꽤 좋은 결과를 보여줍니다.&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;물론 OpenAI나 Anthropic의 최고급 모델 수준에는 조금 못 미칠 수 있지만, 개인적인 용도로는 충분히 훌륭하다고 생각해요.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. V0&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blDrzy/btsL3PSSTKU/cobKpR2Qf4Vk7mKhWaXX31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blDrzy/btsL3PSSTKU/cobKpR2Qf4Vk7mKhWaXX31/img.png&quot; data-alt=&quot;VO AI의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blDrzy/btsL3PSSTKU/cobKpR2Qf4Vk7mKhWaXX31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblDrzy%2FbtsL3PSSTKU%2FcobKpR2Qf4Vk7mKhWaXX31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;279&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VO AI의 로고&lt;/figcaption&gt;
&lt;/figure&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;b&gt;V0&lt;/b&gt;는 몇 주 전 Vercel에서 출시한 AI 툴로, 웹사이트용 인터페이스를 원하는 대로 생성해주는 &amp;lsquo;생성형 UI&amp;rsquo; 플랫폼입니다. 프런트엔드 베스트 프랙티스와 생성형 AI의 결합이라고 보시면 돼요.&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;제가 테스트해본 결과, 원하는 UI 아이디어를 설명만 하면 React, Tailwind CSS, Shadcn UI 같은 오픈소스 기술 스택을 활용해 코드를 자동 생성해줍니다. 원하는 대로 여러 번 수정 요청을 하면 점차 더 완벽한 코드가 나오고, 최종적으로 마음에 들면 복사해서 실제 프로젝트에 붙여넣으면 되니 정말 간편합니다.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료, 월 $20&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. Gemini&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciUmPA/btsL4wypQJm/HeWYKYZvu1QLKqPVNZMsNk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciUmPA/btsL4wypQJm/HeWYKYZvu1QLKqPVNZMsNk/img.webp&quot; data-alt=&quot;Gemini AI의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciUmPA/btsL4wypQJm/HeWYKYZvu1QLKqPVNZMsNk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciUmPA%2FbtsL4wypQJm%2FHeWYKYZvu1QLKqPVNZMsNk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;572&quot; height=&quot;322&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Gemini AI의 로고&lt;/figcaption&gt;
&lt;/figure&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;마이크로소프트가 OpenAI에 100억 달러를 투자했을 때, 많은 이들이 &amp;ldquo;구글은 뒤처지는 게 아니냐?&amp;rdquo;고 우려했지만, 구글도 꽤 빠른 속도로 대응하고 있습니다. 아직 Claude나 ChatGPT만큼의 모델 수준을 보여주진 못했지만, 계속 발전 중이에요.&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;구글의 최신 AI 모델인 &lt;b&gt;Gemini&lt;/b&gt;의 가장 큰 강점은 최대 200만 토큰을 처리할 수 있는 엄청난 컨텍스트 윈도우입니다. 대화를 많이 할수록 맥락을 더 잘 파악해서 점차 똑똑해지는 느낌이죠.&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;개인적으로는 Gemini 공식 웹사이트에서 직접 쓰기보다는 &lt;b&gt;Google AI Studio&lt;/b&gt;를 통해 사용하는 편이 답변의 품질이 더 좋았습니다. 비슷한 경험을 한 사용자들도 꽤 많더군요.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료, 월 $20&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. Perplexity&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2500&quot; data-origin-height=&quot;1155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xw44p/btsL5s9LkHB/MynklA1fq3VAN1AGwAeL80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xw44p/btsL5s9LkHB/MynklA1fq3VAN1AGwAeL80/img.png&quot; data-alt=&quot;Perplexity의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xw44p/btsL5s9LkHB/MynklA1fq3VAN1AGwAeL80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxw44p%2FbtsL5s9LkHB%2FMynklA1fq3VAN1AGwAeL80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;587&quot; height=&quot;271&quot; data-origin-width=&quot;2500&quot; data-origin-height=&quot;1155&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Perplexity의 로고&lt;/figcaption&gt;
&lt;/figure&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;b&gt;Perplexity&lt;/b&gt;는 챗봇과 검색 엔진 기능을 결합한 AI 검색 플랫폼입니다. 질문을 하면 관련 자료 출처를 제시하면서 자세한 답변을 주기 때문에, 여러 페이지를 뒤적이지 않아도 된다는 장점이 있어요.&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;개인적으로 최근에 아주 만족스럽게 사용 중인데, 할인 쿠폰이나 프로모션 코드를 찾을 때도 유용합니다. 일반 검색 엔진에서 찾으면 대체로 쓸모없는 할인 사이트만 잔뜩 뜨는데, Perplexity에서는 한 번의 클릭만으로 원하는 할인 정보를 모아서 확인할 수 있거든요.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료, 월 $20&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. Replit&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxLvUv/btsL39cvbLG/yuOqsfmDtf5KQph1NlbYQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxLvUv/btsL39cvbLG/yuOqsfmDtf5KQph1NlbYQ1/img.png&quot; data-alt=&quot;Replit의 로고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxLvUv/btsL39cvbLG/yuOqsfmDtf5KQph1NlbYQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxLvUv%2FbtsL39cvbLG%2FyuOqsfmDtf5KQph1NlbYQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;613&quot; height=&quot;221&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Replit의 로고&lt;/figcaption&gt;
&lt;/figure&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;b&gt;Replit&lt;/b&gt;은 소프트웨어 개발과 배포를 손쉽게 할 수 있는 AI 플랫폼입니다. &lt;b&gt;Replit Agent&lt;/b&gt; 기능을 사용하면 &amp;ldquo;무엇을 만들고 싶은지&amp;rdquo; 자연어로 설명만 해도 필요한 프로젝트 골격을 자동으로 생성해줍니다.&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;앞서 소개한 V0가 UI를 자동 구성해주는 느낌이라면, Replit Agent는 앱 전반의 기능 구현까지 알아서 처리하는 점이 특징이죠.&lt;/p&gt;
&lt;p class=&quot;price&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 가격: 무료, 월 $10&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프리미엄 버전 기준으로 봤을 때 ChatGPT의 최신 모델은 여전히 훌륭합니다. 최근 추가된 음성 기능(보이스 모델)도 아주 매력적이고요. 저도 간단한 질의응답을 할 때는 음성 입력으로 신속하게 사용하곤 합니다.&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;하지만 이처럼 목적이나 분야에 특화되어 뛰어난 기능을 제공하는 경쟁 서비스들이 등장하면서, 꼭 ChatGPT에만 의존할 필요가 없어졌다는 점도 사실입니다.&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;AI 시장에서 경쟁이 치열해질수록 각 회사가 더 나은 모델과 기능을 내놓기 위해 노력하고, 결국 사용자 입장에서는 더 좋은 혜택을 받게 되니까요.&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;앞으로 또 어떤 놀라운 AI 모델이나 툴이 우리를 기다리고 있을지, 그리고 그 기술들이 우리의 업무와 일상을 얼마나 편리하게 만들어줄지 기대됩니다. 혹시 제가 놓친 더 좋은 대안이 있다면, 댓글로 공유해 주시기 바랍니다!&lt;/p&gt;</description>
      <category> Development/Artificial Intelligence</category>
      <category>AI</category>
      <category>ChatGPT</category>
      <category>Claude</category>
      <category>cursor</category>
      <category>GEMINI</category>
      <category>Generative AI</category>
      <category>groq</category>
      <category>Perplexity</category>
      <category>replit</category>
      <category>v0</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/52</guid>
      <comments>https://devloo.tistory.com/entry/%EC%9D%B4%EC%A0%A0-ChatGPT%EB%8F%84-%EA%B5%AC%EC%8B%9C%EB%8C%80-%EC%9C%A0%EB%AC%BC-%EC%A7%80%EA%B8%88-%EB%B0%94%EB%A1%9C-%EC%8D%A8%EC%95%BC-%ED%95%A0-10%EB%B0%B0-%EB%8D%94-%EB%9B%B0%EC%96%B4%EB%82%9C-%EB%8C%80%EC%95%88-%ED%88%B4Claude-Cursor-Groq-V0-Gemini-Perplexity-Replit#entry52comment</comments>
      <pubDate>Sat, 1 Feb 2025 22:34:48 +0900</pubDate>
    </item>
    <item>
      <title>[DeepSeek] DeepSeek R-1을 내 PC에 설치하고 사용하는 방법</title>
      <link>https://devloo.tistory.com/entry/DeepSeek-DeepSeek-R-1%EB%A5%BC-%EB%82%B4-PC%EC%97%90-%EC%84%A4%EC%B9%98%ED%95%98%EA%B3%A0-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHOEz5/btsL36l55Go/S9auXbIVC8Bym9LkiJ9VO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHOEz5/btsL36l55Go/S9auXbIVC8Bym9LkiJ9VO0/img.jpg&quot; data-alt=&quot;DeepSeek R-1 로컬 PC에서 사용하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHOEz5/btsL36l55Go/S9auXbIVC8Bym9LkiJ9VO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHOEz5%2FbtsL36l55Go%2FS9auXbIVC8Bym9LkiJ9VO0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;394&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DeepSeek R-1 로컬 PC에서 사용하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;들어가며&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 중국의 AI 기업 DeepSeek이 선보인 오픈소스 AI 언어 모델 &lt;b&gt;DeepSeek R-1&lt;/b&gt;에 대한 이야기가 아주 뜨겁습니다. 어떤 사람들은 이 모델이 OpenAI의 모델에 비해 추론 능력이 대등하거나 오히려 더 뛰어나다고 주장할 정도입니다.&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;현재 DeepSeek은 무료로 제공되고 있어 사용자 입장에서는 반가운 소식이지만, 동시에 몇 가지 의문을 품게 만들기도 합니다. 이렇게 사용자들이 몰리는 상황에서 서버 비용은 어떻게 감당하고 있을까요? AI 모델을 돌리는 하드웨어 비용이 결코 저렴하지 않을 텐데 말이죠.&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;b&gt;데이터&lt;/b&gt;일 것입니다. AI 모델을 유지&amp;middot;개발하는 데에는 데이터가 필수적이며, DeepSeek 측에서도 사용자 데이터를 기반으로 자사의 양적 트레이딩 모델을 고도화하거나 다른 수익 창출 방안으로 활용할 가능성이 있습니다.&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;때문에, 데이터 프라이버시가 염려되지만 그래도 DeepSeek R-1을 써보고 싶다면, 가장 좋은 방법은 모델을 &lt;b&gt;로컬 환경&lt;/b&gt;에서 직접 실행하는 것입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DeepSeek R-1이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마 전 DeepSeek은 &lt;b&gt;DeepSeek R-1&lt;/b&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;기술적으로 DeepSeek R-1(흔히 R1으로 줄여 부름)은 &lt;b&gt;DeepSeek-V3&lt;/b&gt;라는 대형 베이스 모델에서 파생되었습니다. 이후 고품질의 인간 레이블 데이터로 감독 학습(SFT, Supervised Fine Tuning)을 거치고, 강화 학습(RL)로 추가 보정함으로써 만들어졌다고 합니다.&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;lsquo;오픈소스&amp;rsquo; 모델이라는 점이 놀라울 정도로 완성도가 높습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;로컬에서 실행하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 &lt;b&gt;Ollama&lt;/b&gt;라는 도구를 사용하여 DeepSeek R-1을 로컬에서 실행하는 과정을 소개하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;Ollama&lt;/i&gt;는 무료 오픈소스 프로젝트로, 대형 언어 모델(LLM)을 macOS, Linux, Windows 환경에서 손쉽게 로컬로 구동할 수 있게 도와줍니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저 &lt;a href=&quot;https://ollama.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ollama 공식 홈페이지&lt;/a&gt;에 접속해 다운로드 버튼을 클릭합니다.&lt;/li&gt;
&lt;li&gt;OS에 맞춰 Ollama를 설치합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biNi7Z/btsL4YAKMBQ/M8rxKMIHhlBhMkO8OZ1nP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biNi7Z/btsL4YAKMBQ/M8rxKMIHhlBhMkO8OZ1nP1/img.png&quot; data-alt=&quot;Ollama 다운로드 하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biNi7Z/btsL4YAKMBQ/M8rxKMIHhlBhMkO8OZ1nP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiNi7Z%2FbtsL4YAKMBQ%2FM8rxKMIHhlBhMkO8OZ1nP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;460&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Ollama 다운로드 하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설치 확인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치를 마쳤다면, 터미널(명령 프롬프트)을 열고 아래 명령어를 실행해 Ollama 버전을 확인하세요.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;ollama -v&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;373&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mmptA/btsL3p7v2Or/b6s9t2HmwYFE6Keb1NvelK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mmptA/btsL3p7v2Or/b6s9t2HmwYFE6Keb1NvelK/img.png&quot; data-alt=&quot;Ollama 설치 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mmptA/btsL3p7v2Or/b6s9t2HmwYFE6Keb1NvelK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmmptA%2FbtsL3p7v2Or%2Fb6s9t2HmwYFE6Keb1NvelK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;373&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Ollama 설치 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류 대신 Ollama의 버전 번호가 표시되면 정상적으로 설치가 완료된 것입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DeepSeek R-1 설치 및 로컬 사용 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ollama에 모델을 설치하려면, Ollama가 제공하는 모델 검색 기능을 사용하면 됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Ollama를 실행한 뒤 &lt;b&gt;Models&lt;/b&gt; 탭으로 이동합니다.&lt;/li&gt;
&lt;li&gt;검색창에 &lt;code&gt;deepseek&lt;/code&gt; 키워드를 입력하세요.&lt;/li&gt;
&lt;li&gt;그러면 첫 번째 결과로 &lt;code&gt;deepseek-r1&lt;/code&gt; 모델이 나타날 것입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egi2hn/btsL2HnoT0f/rRYDCeA4OHisp6dHK2t400/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egi2hn/btsL2HnoT0f/rRYDCeA4OHisp6dHK2t400/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egi2hn/btsL2HnoT0f/rRYDCeA4OHisp6dHK2t400/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fegi2hn%2FbtsL2HnoT0f%2FrRYDCeA4OHisp6dHK2t400%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;460&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJS4Zr/btsL3QcKpkV/wIWeUhy6IPkoPviSooZKZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJS4Zr/btsL3QcKpkV/wIWeUhy6IPkoPviSooZKZK/img.png&quot; data-alt=&quot;다운로드 가능한 deepseek 모델들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJS4Zr/btsL3QcKpkV/wIWeUhy6IPkoPviSooZKZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJS4Zr%2FbtsL3QcKpkV%2FwIWeUhy6IPkoPviSooZKZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;507&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;507&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다운로드 가능한 deepseek 모델들&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;br /&gt;다양한 모델 크기(5B~671B 파라미터)가 존재합니다. 모델이 클수록 GPU 메모리가 더 많이 필요하니 참고하세요.&lt;/blockquote&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;b&gt;8B(80억) 파라미터&lt;/b&gt; 버전은 VRAM 8GB 이상의 GPU로도 무난히 구동할 수 있습니다. 반면 더 큰 모델(수천억~수천억 단위 파라미터)은 훨씬 높은 사양의 GPU 혹은 다중 GPU 환경이 요구됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시: 8B 모델 다운로드 및 실행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 터미널에서 실행하면 &lt;b&gt;8B 파라미터&lt;/b&gt; 모델을 다운받을 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;ollama run deepseek-r1:8b&lt;/code&gt;&lt;/pre&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.9GB)이 다운로드되므로, &lt;b&gt;충분한 디스크 공간&lt;/b&gt;을 확보해두세요. 다운로드가 끝나면 바로 로컬 PC에서 모델이 구동됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드가 완료된 시점부터는 인터넷 연결이 끊겨도 모델이 동작합니다. 다음과 같이 대화형으로 바로 질문을 던질 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;373&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdNgyu/btsL4dFp2cy/FivBEARBVIK5SEF8kvo7M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdNgyu/btsL4dFp2cy/FivBEARBVIK5SEF8kvo7M0/img.png&quot; data-alt=&quot;deepseek r1 모델 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdNgyu/btsL4dFp2cy/FivBEARBVIK5SEF8kvo7M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdNgyu%2FbtsL4dFp2cy%2FFivBEARBVIK5SEF8kvo7M0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;373&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;deepseek r1 모델 다운로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9vMfF/btsL3pmcYKz/dkRzZk8cVF4uObxggXEgGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9vMfF/btsL3pmcYKz/dkRzZk8cVF4uObxggXEgGK/img.png&quot; data-alt=&quot;deepseek r1 모델 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9vMfF/btsL3pmcYKz/dkRzZk8cVF4uObxggXEgGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9vMfF%2FbtsL3pmcYKz%2FdkRzZk8cVF4uObxggXEgGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;384&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;deepseek r1 모델 다운로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;&amp;gt; Prompt: What is DeepSeek R-1?
&amp;lt;&amp;lt; Response: DeepSeek-R-1 is an AI assistant developed by the Chinese company DeepSeek ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깊이가 있는 추론을 빠르게 해내며, 인터넷에 연결되어 있어도 웹에 직접 액세스하진 않는다는 점도 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;&amp;gt; Prompt: What&amp;rsquo;s the latest price of AAPL?
&amp;lt;&amp;lt; Response: As an AI assistant, I don&amp;rsquo;t have real-time data access ...
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Ollama로 할 수 있는 다른 작업&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LLaMA2, Phi 4, Mistral, Gemma 2 등 다양한 LLM을 로컬에서 실행&lt;/li&gt;
&lt;li&gt;자신만의 LLM 생성 및 공유&lt;/li&gt;
&lt;li&gt;모델 가중치와 설정값, 데이터를 단일 패키지로 번들링&lt;/li&gt;
&lt;li&gt;GPU 사용 최적화 및 다양한 구성 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GPU와 VRAM 요구 사항&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DeepSeek-R1의 VRAM 요구 사항은 모델 크기, 파라미터 수, 양자화(quantization) 여부 등에 따라 달라집니다. 아래는 VRAM 요구량에 대한 대략적인 가이드와 권장 GPU 목록입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A6ANg/btsL25auht6/eWkY1DFZiymHS6Xysfogz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A6ANg/btsL25auht6/eWkY1DFZiymHS6Xysfogz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A6ANg/btsL25auht6/eWkY1DFZiymHS6Xysfogz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA6ANg%2FbtsL25auht6%2FeWkY1DFZiymHS6Xysfogz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;604&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;대형 모델&lt;/b&gt;(예: 670B 파라미터 등)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 GPU로는 무리가 있음. 다중 GPU 구성(NVIDIA A100, H100 등) 고려&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중간 모델&lt;/b&gt;(수십~수백억 파라미터대)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;16~24GB VRAM의 고사양 단일 GPU 혹은 여러 GPU 병렬 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;소형&amp;middot;Distilled 모델&lt;/b&gt;(8B 이하)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;8GB 이하 VRAM에서도 구동 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추가 메모리 고려&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추론 중 활성화 함수(activations)나 버퍼, 배치 처리 과정 등에서 추가 메모리 사용 발생 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;로컬에서 실행하는 이유&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DeepSeek 웹 버전이나 모바일 앱이 무료로 제공되고, &amp;ldquo;DeepThink&amp;rdquo;나 웹 검색 같은 편리한 기능도 갖추고 있습니다. 하지만 로컬 실행을 고려해볼 만한 이유가 몇 가지 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;개인정보 보호&lt;br /&gt;&lt;/b&gt;웹이나 앱을 사용할 때는 입력한 질문과 첨부 파일이 DeepSeek 서버로 전송됩니다. 해당 데이터가 어떻게 쓰이는지 모르는 상황에서, 로컬 실행은 내 데이터를 온전히 내 PC에만 두는 방법입니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;오프라인 환경에서도 사용 가능&lt;br /&gt;&lt;/b&gt;로컬 모델은 인터넷 연결이 없어도 동작합니다. 여행 중이나 인터넷 연결이 불안정한 상황, 혹은 단순히 오프라인 작업을 선호할 때도 문제없이 사용할 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;미래 대비&lt;br /&gt;&lt;/b&gt;DeepSeek이 지금은 무료지만, 앞으로 영구적으로 무료일 것이라는 보장은 없습니다. 추후 요금제가 생기거나 사용량에 제한이 생길 수 있는데, 로컬 버전을 쓰면 이러한 제약을 전혀 받지 않습니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;유연한 활용&lt;br /&gt;&lt;/b&gt;로컬 모델은 원하는 대로 파인튜닝하거나, 다른 툴과 연동해 자동화 워크플로우를 구성할 수 있습니다. 모델 인터페이스나 핵심 설정을 자유롭게 수정하는 것도 가능하죠.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DeepSeek R-1은 분명 흥미로운 모델입니다. 웹이나 모바일 앱 버전이 따로 제공되어 간편하지만, 그만큼 사용자 데이터가 어떻게 쓰이는지 확실치 않은 것도 사실입니다. &lt;b&gt;데이터 프라이버시&lt;/b&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;DeepSeek 모델들은 GPU 사양이 아주 높지 않아도 꽤 원활하게 돌아가도록 만들어졌습니다. 물론 &lt;b&gt;DeepSeek-R1-Zero&lt;/b&gt;처럼 초대형 모델은 다중 GPU 설정이 필수이지만, &lt;b&gt;Distilled 모델&lt;/b&gt;들은 단일 GPU에서도 충분히 구동 가능합니다.&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;b&gt;Gradio&lt;/b&gt;나 &lt;b&gt;Chatbox AI&lt;/b&gt; 같은 도구로 간단한 웹 UI를 덧붙일 수도 있습니다. 이 방법은 다음 글에서 자세히 다룰 테니, 궁금한 점이 있으면 댓글로 남겨주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&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;b&gt;A.I 관련 글을 보고 싶으시다면 아래 링크를 클릭하세요 :)&lt;br /&gt;&lt;a href=&quot;https://devloo.io/category/artificial-intelligence/&quot;&gt;사이트 이동하기&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1525&quot;&gt;&lt;a href=&quot;https://devloo.io/category/artificial-intelligence/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bunnQ5/btsL3w6uD6j/b5HrWnPZYUjDtAKKopAfC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbunnQ5%2FbtsL3w6uD6j%2Fb5HrWnPZYUjDtAKKopAfC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1525&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1525&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category> Development/Artificial Intelligence</category>
      <category>AI</category>
      <category>Artificial Intelligence</category>
      <category>ChatGPT</category>
      <category>deepseek</category>
      <category>deepseek r-1</category>
      <category>Gen AI</category>
      <category>Generative AI</category>
      <category>GPT</category>
      <category>R-1</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/51</guid>
      <comments>https://devloo.tistory.com/entry/DeepSeek-DeepSeek-R-1%EB%A5%BC-%EB%82%B4-PC%EC%97%90-%EC%84%A4%EC%B9%98%ED%95%98%EA%B3%A0-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95#entry51comment</comments>
      <pubDate>Fri, 31 Jan 2025 15:49:18 +0900</pubDate>
    </item>
    <item>
      <title>AI 이미지 생성 &amp;mdash; 99%가 모르는 충격적인 사실</title>
      <link>https://devloo.tistory.com/entry/AI-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%83%9D%EC%84%B1-%E2%80%94-99%EA%B0%80-%EB%AA%A8%EB%A5%B4%EB%8A%94-%EC%B6%A9%EA%B2%A9%EC%A0%81%EC%9D%B8-%EC%82%AC%EC%8B%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 AI 이미지 생성 기술에 대해 깊이 있게 다루어보려 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ImageFX -AI Image Generation .webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kD4Zl/btsJrEZ81bj/rAkyxVAsyjtqb5PQQ1pl61/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kD4Zl/btsJrEZ81bj/rAkyxVAsyjtqb5PQQ1pl61/img.webp&quot; data-alt=&quot;ImageFX &amp;amp;mdash; AI로 생성된 커버 이미지입니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kD4Zl/btsJrEZ81bj/rAkyxVAsyjtqb5PQQ1pl61/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkD4Zl%2FbtsJrEZ81bj%2FrAkyxVAsyjtqb5PQQ1pl61%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ImageFX -AI Image Generation .webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageFX &amp;mdash; AI로 생성된 커버 이미지입니다.&lt;/figcaption&gt;
&lt;/figure&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;많은 글들이 AI 이미지 생성기 중 어떤 것이&lt;b&gt; &quot;최고&quot;&lt;/b&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Dall-e 3 vs Flux.1 vs Leonardo.ai vs ImageFX (Google)&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트 #1: 실제 사람의 AI 이미지&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flux.1은 사람의 실제 모습을 가장 사실적으로 표현하는데 뛰어납니다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&amp;ldquo;20세 아시아 여성의 포토리얼리틱 셀카 이미지. 그녀는 플로리다에 있는 집 앞마당에 서 있으며, 흰 티셔츠를 입고 있습니다. 마당 중앙에 서 있고, 저녁 시간이 되기 전 흐린 하늘과 야자수가 배경으로 보입니다.&amp;rdquo;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Flux.1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flux.1 이미지 생성.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ztdto/btsJrzq78Ck/pkK1WmdZtxBbm8akUDeKU0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ztdto/btsJrzq78Ck/pkK1WmdZtxBbm8akUDeKU0/img.webp&quot; data-alt=&quot;Flux.1: &amp;amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ztdto/btsJrzq78Ck/pkK1WmdZtxBbm8akUDeKU0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZtdto%2FbtsJrzq78Ck%2FpkK1WmdZtxBbm8akUDeKU0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Flux.1 이미지 생성.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flux.1: &amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;4529&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dall-e 3 from OpenAI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dall-e 3 이미지 생성.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kIsWt/btsJqnkQMrL/Y1r8XRFPkp6iDYCXAPEUp0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kIsWt/btsJqnkQMrL/Y1r8XRFPkp6iDYCXAPEUp0/img.webp&quot; data-alt=&quot;Dall-e 3 (OpenAI): &amp;amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kIsWt/btsJqnkQMrL/Y1r8XRFPkp6iDYCXAPEUp0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkIsWt%2FbtsJqnkQMrL%2FY1r8XRFPkp6iDYCXAPEUp0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Dall-e 3 이미지 생성.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dall-e 3 (OpenAI): &amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&lt;/figcaption&gt;
&lt;/figure&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 style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;1cb4&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ImageFX (Google)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ImageFX 이미지 생성.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd4DlT/btsJrSjumpt/B4MKGpFJxDhoJgTxbYQggK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd4DlT/btsJrSjumpt/B4MKGpFJxDhoJgTxbYQggK/img.webp&quot; data-alt=&quot;ImageFX (Google): &amp;amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd4DlT/btsJrSjumpt/B4MKGpFJxDhoJgTxbYQggK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd4DlT%2FbtsJrSjumpt%2FB4MKGpFJxDhoJgTxbYQggK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ImageFX 이미지 생성.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageFX (Google): &amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Leonardo.ai&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Leonardo.ai 이미지 생성.webp&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GsWAz/btsJrADzyZR/fd7AfTgeZDk4UdmJyEKXMk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GsWAz/btsJrADzyZR/fd7AfTgeZDk4UdmJyEKXMk/img.webp&quot; data-alt=&quot;Leonardo.ai:&amp;amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GsWAz/btsJrADzyZR/fd7AfTgeZDk4UdmJyEKXMk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGsWAz%2FbtsJrADzyZR%2Ffd7AfTgeZDk4UdmJyEKXMk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;1120&quot; data-filename=&quot;Leonardo.ai 이미지 생성.webp&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Leonardo.ai:&amp;nbsp;플로리다에 있는 아시아 여성 AI 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;결론:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flux.1이 이번 테스트의 승자입니다.&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;ImageFX는 두 번째로, 꽤 사실적이지만 어딘가 미묘하게 어색합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Dall-e 3와 Leonardo.ai는 완전히 실패했습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;제 생각에 Dall-e와 Leonardo는 어떤 &quot;안전성&quot; 문제로 인해 젊은 여성의 사실적인 이미지를 만들지 않도록 제한을 둔 것 같습니다.&lt;/span&gt;&lt;/blockquote&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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 점은 매우 특이하며, 주목할 필요가 있습니다. AI 생성기들이 인간에 의해 프로그래밍된 만큼, 때때로 그 결과는 매우 다를 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트 #2: 나이 든 사람&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 테스트에서 젊은 여성의 사실적인 이미지를 거부한 AI 생성기들이 있었다는 것을 알게 되었습니다. 그렇다면 노인 이미지는 어떨까요?&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&quot;깊은 주름과 은발을 가진 노부인의 포토리얼리틱 초상화. 전통적인 직조된 숄을 두르고 있으며, 인자한 미소를 짓고 있습니다. 배경은 단순하고 흐릿한 자연 풍경으로, 얼굴에 집중되어 있습니다.&quot;&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Flux.1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flux.1 이미지 생성2.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyY6Ex/btsJqdo9E2f/Ro7hq8dkw1cwkcxKPLwwT1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyY6Ex/btsJqdo9E2f/Ro7hq8dkw1cwkcxKPLwwT1/img.webp&quot; data-alt=&quot;Flux.1: &amp;amp;nbsp;AI로 생성된 노부인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyY6Ex/btsJqdo9E2f/Ro7hq8dkw1cwkcxKPLwwT1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyY6Ex%2FbtsJqdo9E2f%2FRo7hq8dkw1cwkcxKPLwwT1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Flux.1 이미지 생성2.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flux.1: &amp;nbsp;AI로 생성된 노부인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;6523&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dall-e 3&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dall-e 3 이미지 생성2.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhovMF/btsJr4YjS9L/K83VybruoFv90FDXxcKzWK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhovMF/btsJr4YjS9L/K83VybruoFv90FDXxcKzWK/img.webp&quot; data-alt=&quot;Dall-e 3: &amp;amp;nbsp;AI로 생성된 노부인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhovMF/btsJr4YjS9L/K83VybruoFv90FDXxcKzWK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhovMF%2FbtsJr4YjS9L%2FK83VybruoFv90FDXxcKzWK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Dall-e 3 이미지 생성2.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dall-e 3: &amp;nbsp;AI로 생성된 노부인&lt;/figcaption&gt;
&lt;/figure&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;이번 테스트에서는 Flux.1보다 더 나은 결과를 보여줬다고 생각합니다 (물론 둘 다 훌륭하지만요).&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;Dall-e 3는 원한다면 사람의 이미지를 충분히 만들 수 있지만, 이상하게도 노인 이미지에 대해서는 전혀 제약이 없는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ImageFX&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ImageFX 이미지 생성 2.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CCwwr/btsJqTQ8lv8/ayGRKkkABeRIZKKHL9bBzK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CCwwr/btsJqTQ8lv8/ayGRKkkABeRIZKKHL9bBzK/img.webp&quot; data-alt=&quot; ImageFX: &amp;amp;nbsp;AI로 생성된 노부인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CCwwr/btsJqTQ8lv8/ayGRKkkABeRIZKKHL9bBzK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCCwwr%2FbtsJqTQ8lv8%2FayGRKkkABeRIZKKHL9bBzK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ImageFX 이미지 생성 2.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt; ImageFX: &amp;nbsp;AI로 생성된 노부인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;결론:&lt;/b&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;Dall-e와 Leonardo에서는 20대 여성 이미지에서만 검열이 문제가 되었습니다.&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;참고로, Leonardo가 이전에 젊은 여성의 매우 고품질 포토리얼리틱 이미지를 생성한 것을 본 적이 있습니다. 그래서 이번에 왜 이런 결과가 나왔는지 확실하지 않습니다. 최근에 Canva가 Leonardo를 인수했기 때문에, 더 많은 검열 압박을 받고 있을 가능성도 있습니다. 앞으로 어떤 변화가 있을지 지켜봐야 할 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트 #3: 유명인사 (도널드 트럼프)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&quot;도널드 트럼프의 포토리얼리틱 이미지&quot;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Flux.1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flux.1 이미지 생성 3.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u4vNh/btsJqBJ7Eov/bXo4wckgWTKNWYYjMK8mA0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u4vNh/btsJqBJ7Eov/bXo4wckgWTKNWYYjMK8mA0/img.webp&quot; data-alt=&quot;Flux.1:&amp;amp;nbsp;AI로 생성된 도널드 트럼프 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u4vNh/btsJqBJ7Eov/bXo4wckgWTKNWYYjMK8mA0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu4vNh%2FbtsJqBJ7Eov%2FbXo4wckgWTKNWYYjMK8mA0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Flux.1 이미지 생성 3.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flux.1:&amp;nbsp;AI로 생성된 도널드 트럼프 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&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;다른 유명인사들, 예를 들어 테일러 스위프트의 이미지를 Flux.1로 생성했을 때, 결과물이 굉장히 인상적이었습니다.&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 id=&quot;a2e2&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Leonardo.ai&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Leonardo.ai 이미지 생성 3.webp&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7EkIG/btsJqiDPwrE/aR0KCkRSXAEWW6HEUm4qF0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7EkIG/btsJqiDPwrE/aR0KCkRSXAEWW6HEUm4qF0/img.webp&quot; data-alt=&quot;Leonardo.ai: 도널드 트럼프 AI 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7EkIG/btsJqiDPwrE/aR0KCkRSXAEWW6HEUm4qF0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7EkIG%2FbtsJqiDPwrE%2FaR0KCkRSXAEWW6HEUm4qF0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;1120&quot; data-filename=&quot;Leonardo.ai 이미지 생성 3.webp&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Leonardo.ai: 도널드 트럼프 AI 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&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;b&gt;Dall-e&amp;nbsp;3와&amp;nbsp;ImageFX는&amp;nbsp;완전히&amp;nbsp;실패했습니다.&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;이&amp;nbsp;두&amp;nbsp;이미지&amp;nbsp;생성기는&amp;nbsp;공인&amp;nbsp;인물의&amp;nbsp;이미지를&amp;nbsp;아예&amp;nbsp;시도조차&amp;nbsp;하지&amp;nbsp;않았습니다.&amp;nbsp;그들의&amp;nbsp;정책에&amp;nbsp;어긋나기&amp;nbsp;때문입니다.&lt;br /&gt;&lt;br /&gt;보시다시피,&amp;nbsp;내부&amp;nbsp;정책과&amp;nbsp;검열이&amp;nbsp;이미지&amp;nbsp;생성에&amp;nbsp;큰&amp;nbsp;영향을&amp;nbsp;미칩니다.&lt;br /&gt;&lt;br /&gt;이론적으로는&amp;nbsp;이&amp;nbsp;모델들이&amp;nbsp;무엇이든&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;일부&amp;nbsp;모델은&amp;nbsp;다른&amp;nbsp;모델들보다&amp;nbsp;훨씬&amp;nbsp;더&amp;nbsp;많은&amp;nbsp;제약을&amp;nbsp;받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트 #4: 음식 이미지 (특정 카메라 각도 등)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 테스트의 목적은 보다 구체적이고 복잡한 프롬프트로 AI 생성기들이 어떻게 반응하는지 확인하는 것이었습니다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&quot;캐논 EOS 5D Mark IV와 50mm f/1.2 렌즈로 45도 각도에서 살짝 눈높이보다 위에서 촬영한 완벽하게 구운 미디엄 레어 스테이크. 스테이크는 숯 자국과 로즈마리 한 줄기가 얹어져 있으며, 구운 감자와 그린빈이 곁들여져 있습니다. 배경에는 흐릿하게 적포도주 한 잔이 놓여 있습니다.&quot;&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;3638&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dall-e 3&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dall-e 3 이미지 생성 4.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwWFeE/btsJsgEnr1M/UHeOukaqbkrl7HgUGUX3d1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwWFeE/btsJsgEnr1M/UHeOukaqbkrl7HgUGUX3d1/img.webp&quot; data-alt=&quot;Dall-e 3:&amp;amp;nbsp;AI로 생성된 스테이크 저녁&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwWFeE/btsJsgEnr1M/UHeOukaqbkrl7HgUGUX3d1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwWFeE%2FbtsJsgEnr1M%2FUHeOukaqbkrl7HgUGUX3d1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Dall-e 3 이미지 생성 4.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dall-e 3:&amp;nbsp;AI로 생성된 스테이크 저녁&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;3603&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ImageFX&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ImageFX 이미지 생성 4.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkXHmo/btsJqDAZJTa/3v8QHQQmr0nk0uSboPK4W0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkXHmo/btsJqDAZJTa/3v8QHQQmr0nk0uSboPK4W0/img.webp&quot; data-alt=&quot;ImageFX: &amp;amp;nbsp;AI로 생성된 스테이크 저녁&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkXHmo/btsJqDAZJTa/3v8QHQQmr0nk0uSboPK4W0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkXHmo%2FbtsJqDAZJTa%2F3v8QHQQmr0nk0uSboPK4W0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ImageFX 이미지 생성 4.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageFX: &amp;nbsp;AI로 생성된 스테이크 저녁&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;2ae8&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Flux.1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flux.1 이미지 생성 4.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMeyKi/btsJqhkCzzj/qJrw599ZAuDAQd1nBPneK1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMeyKi/btsJqhkCzzj/qJrw599ZAuDAQd1nBPneK1/img.webp&quot; data-alt=&quot;Flux.1:&amp;amp;nbsp;AI로 생성된 스테이크 저녁&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMeyKi/btsJqhkCzzj/qJrw599ZAuDAQd1nBPneK1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMeyKi%2FbtsJqhkCzzj%2FqJrw599ZAuDAQd1nBPneK1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Flux.1 이미지 생성 4.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flux.1:&amp;nbsp;AI로 생성된 스테이크 저녁&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;결론:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세&amp;nbsp;모델&amp;nbsp;모두&amp;nbsp;품질&amp;nbsp;면에서는&amp;nbsp;비슷한&amp;nbsp;수준이었습니다.&lt;br /&gt;&lt;br /&gt;개인적으로는&amp;nbsp;Dall-e&amp;nbsp;3가&amp;nbsp;가장&amp;nbsp;뛰어났다고&amp;nbsp;생각합니다.&lt;br /&gt;&lt;br /&gt;Flux는&amp;nbsp;두&amp;nbsp;번째였고,&lt;br /&gt;&lt;br /&gt;ImageFX는&amp;nbsp;마지막이었습니다&amp;nbsp;(스테이크가&amp;nbsp;건조해&amp;nbsp;보이고&amp;nbsp;약간&amp;nbsp;인위적이었습니다).&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;중요한&amp;nbsp;점은,&amp;nbsp;세&amp;nbsp;이미지&amp;nbsp;생성&amp;nbsp;모델&amp;nbsp;모두&amp;nbsp;검열과는&amp;nbsp;무관한&amp;nbsp;복잡한&amp;nbsp;프롬프트를&amp;nbsp;꽤&amp;nbsp;잘&amp;nbsp;처리했다는&amp;nbsp;것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트 #5: 추상 미술&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 테스트의 목표는 AI 모델들이 얼마나 창의적으로 작업할 수 있는지를 확인하는 것이었습니다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&quot;서로 뒤섞이고 흐르는 색과 형상들로 이루어진 추상적인 작품. 터키석, 마젠타, 금색 등 꿈 같은 느낌을 자아내는 생동감 넘치는 색들이 움직임과 에너지를 전달합니다.&quot;&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dall-e 3&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dall-e 3 이미지 생성 5.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1Q3Xl/btsJqRskNd1/6ruMDwvtkrnzX9KJWo4juk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1Q3Xl/btsJqRskNd1/6ruMDwvtkrnzX9KJWo4juk/img.webp&quot; data-alt=&quot;Dall-e 3: &amp;amp;nbsp;AI로 생성된 추상 미술&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1Q3Xl/btsJqRskNd1/6ruMDwvtkrnzX9KJWo4juk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1Q3Xl%2FbtsJqRskNd1%2F6ruMDwvtkrnzX9KJWo4juk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Dall-e 3 이미지 생성 5.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dall-e 3: &amp;nbsp;AI로 생성된 추상 미술&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;ImageFX&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ImageFX 이미지 생성 5.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7Mivw/btsJq2UHwTg/PaxrgOREjFaDH7AH26ZpEk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7Mivw/btsJq2UHwTg/PaxrgOREjFaDH7AH26ZpEk/img.webp&quot; data-alt=&quot;ImageFX: &amp;amp;nbsp;AI로 생성된 추상 미술&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7Mivw/btsJq2UHwTg/PaxrgOREjFaDH7AH26ZpEk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Mivw%2FbtsJq2UHwTg%2FPaxrgOREjFaDH7AH26ZpEk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ImageFX 이미지 생성 5.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageFX: &amp;nbsp;AI로 생성된 추상 미술&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Flux.1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flux.1 이미지 생성 5.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfDQOK/btsJrIuzTGc/kmo1WIDuBoZoe6X5C34KY0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfDQOK/btsJrIuzTGc/kmo1WIDuBoZoe6X5C34KY0/img.webp&quot; data-alt=&quot;Flux.1: &amp;amp;nbsp;추상 미술&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfDQOK/btsJrIuzTGc/kmo1WIDuBoZoe6X5C34KY0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfDQOK%2FbtsJrIuzTGc%2Fkmo1WIDuBoZoe6X5C34KY0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Flux.1 이미지 생성 5.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flux.1: &amp;nbsp;추상 미술&lt;/figcaption&gt;
&lt;/figure&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;b&gt;결론:&lt;/b&gt;&lt;br /&gt;사람마다&amp;nbsp;의견이&amp;nbsp;다를&amp;nbsp;수&amp;nbsp;있겠지만,&amp;nbsp;제&amp;nbsp;생각에는&amp;nbsp;Dall-e&amp;nbsp;3와&amp;nbsp;ImageFX가&amp;nbsp;가장&amp;nbsp;멋지고&amp;nbsp;창의적으로&amp;nbsp;보였습니다.&lt;br /&gt;&lt;br /&gt;Flux.1은&amp;nbsp;조금&amp;nbsp;아쉬운&amp;nbsp;느낌이었습니다.&lt;br /&gt;&lt;br /&gt;아마도&amp;nbsp;이번&amp;nbsp;테스트는&amp;nbsp;단순히&amp;nbsp;사진을&amp;nbsp;합성하는&amp;nbsp;것보다&amp;nbsp;언어를&amp;nbsp;얼마나&amp;nbsp;잘&amp;nbsp;이해하는지가&amp;nbsp;중요한&amp;nbsp;요소였던&amp;nbsp;것&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;OpenAI와&amp;nbsp;Google이&amp;nbsp;언어&amp;nbsp;이해에서&amp;nbsp;더&amp;nbsp;뛰어난&amp;nbsp;성과를&amp;nbsp;낸&amp;nbsp;것이&amp;nbsp;자연스러워&amp;nbsp;보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트 #6: 풍경&lt;/b&gt;&lt;/h4&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&quot;울창한 소나무 숲으로 둘러싸인 고요한 산속 호수. 물은 맑고 투명하며, 멀리 눈 덮인 산이 물 위에 반사됩니다. 작은 나무 부두가 호수로 뻗어 있으며, 노 젓는 배가 물 위에 부드럽게 흔들리고 있습니다.&quot;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Flux.1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flux.1 이미지 생성 6.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edH35A/btsJrR50Syx/Jj3SYn8DxxvvUDR4QfgnT0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edH35A/btsJrR50Syx/Jj3SYn8DxxvvUDR4QfgnT0/img.webp&quot; data-alt=&quot;Flux.1: &amp;amp;nbsp;AI로 생성된 자연 풍경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edH35A/btsJrR50Syx/Jj3SYn8DxxvvUDR4QfgnT0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedH35A%2FbtsJrR50Syx%2FJj3SYn8DxxvvUDR4QfgnT0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Flux.1 이미지 생성 6.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flux.1: &amp;nbsp;AI로 생성된 자연 풍경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;ImageFX&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ImageFX 이미지 생성 6.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RCTBK/btsJrbqtxmQ/mmkL43SLkLSaSkJoMcyKQK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RCTBK/btsJrbqtxmQ/mmkL43SLkLSaSkJoMcyKQK/img.webp&quot; data-alt=&quot;ImageFX: &amp;amp;nbsp;AI로 생성된 자연 풍경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RCTBK/btsJrbqtxmQ/mmkL43SLkLSaSkJoMcyKQK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRCTBK%2FbtsJrbqtxmQ%2FmmkL43SLkLSaSkJoMcyKQK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ImageFX 이미지 생성 6.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageFX: &amp;nbsp;AI로 생성된 자연 풍경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dall-e 3&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dall-e 3 이미지 생성 6.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxfmwA/btsJr4Yk68E/bDipvysiA7s0Oo7exoCkSK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxfmwA/btsJr4Yk68E/bDipvysiA7s0Oo7exoCkSK/img.webp&quot; data-alt=&quot;Dall-e 3:&amp;amp;nbsp;AI로 생성된 자연 풍경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxfmwA/btsJr4Yk68E/bDipvysiA7s0Oo7exoCkSK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxfmwA%2FbtsJr4Yk68E%2FbDipvysiA7s0Oo7exoCkSK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;Dall-e 3 이미지 생성 6.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dall-e 3:&amp;nbsp;AI로 생성된 자연 풍경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;결론:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 모델 모두 꽤 훌륭했습니다.&lt;br /&gt;&lt;br /&gt;개인적으로는&amp;nbsp;Flux.1이&amp;nbsp;승자라고&amp;nbsp;생각하지만,&amp;nbsp;그건&amp;nbsp;단지&amp;nbsp;제가&amp;nbsp;색감을&amp;nbsp;더&amp;nbsp;선호하기&amp;nbsp;때문입니다&amp;nbsp;(이건&amp;nbsp;개인적인&amp;nbsp;취향의&amp;nbsp;문제인&amp;nbsp;것&amp;nbsp;같습니다).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로,&amp;nbsp;AI&amp;nbsp;이미지&amp;nbsp;생성기는&amp;nbsp;각기&amp;nbsp;다른&amp;nbsp;특성과&amp;nbsp;강점을&amp;nbsp;가지고&amp;nbsp;있으며,&amp;nbsp;어떤&amp;nbsp;모델이&amp;nbsp;&quot;최고&quot;라고&amp;nbsp;단정&amp;nbsp;짓기보다는&amp;nbsp;특정&amp;nbsp;상황이나&amp;nbsp;목적에&amp;nbsp;맞는&amp;nbsp;모델을&amp;nbsp;선택하는&amp;nbsp;것이&amp;nbsp;중요합니다.&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;Flux.1,&amp;nbsp;Dall-e&amp;nbsp;3,&amp;nbsp;ImageFX&amp;nbsp;모두&amp;nbsp;훌륭한&amp;nbsp;성과를&amp;nbsp;내지만,&amp;nbsp;개인의&amp;nbsp;취향이나&amp;nbsp;요구에&amp;nbsp;따라&amp;nbsp;선호하는&amp;nbsp;결과물이&amp;nbsp;달라질&amp;nbsp;수&amp;nbsp;있습니다.&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;기술이&amp;nbsp;발전함에&amp;nbsp;따라&amp;nbsp;이들&amp;nbsp;모델&amp;nbsp;간의&amp;nbsp;차이는&amp;nbsp;더&amp;nbsp;뚜렷해지거나,&amp;nbsp;반대로&amp;nbsp;점차&amp;nbsp;비슷해질&amp;nbsp;수도&amp;nbsp;있겠죠.&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;같은&amp;nbsp;요소&amp;nbsp;또한&amp;nbsp;중요한&amp;nbsp;변수로&amp;nbsp;작용할&amp;nbsp;것이므로,&amp;nbsp;이를&amp;nbsp;염두에&amp;nbsp;두고&amp;nbsp;사용해야&amp;nbsp;할&amp;nbsp;것입니다.&lt;/p&gt;</description>
      <category> Development/Artificial Intelligence</category>
      <category>ai image generation</category>
      <category>ai 이미지 모델 비교</category>
      <category>ai 이미지 생성</category>
      <category>Artificial Intelligence</category>
      <category>Dall-E 3</category>
      <category>flux.1</category>
      <category>Generative AI</category>
      <category>ImageFX</category>
      <category>이미지 생성</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/50</guid>
      <comments>https://devloo.tistory.com/entry/AI-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%83%9D%EC%84%B1-%E2%80%94-99%EA%B0%80-%EB%AA%A8%EB%A5%B4%EB%8A%94-%EC%B6%A9%EA%B2%A9%EC%A0%81%EC%9D%B8-%EC%82%AC%EC%8B%A4#entry50comment</comments>
      <pubDate>Thu, 5 Sep 2024 11:46:58 +0900</pubDate>
    </item>
    <item>
      <title>스프링 면접 완벽 대비! 필수 질문 50개 모음</title>
      <link>https://devloo.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%A9%B4%EC%A0%91-%EC%99%84%EB%B2%BD-%EB%8C%80%EB%B9%84-%ED%95%84%EC%88%98-%EC%A7%88%EB%AC%B8-50%EA%B0%9C-%EB%AA%A8%EC%9D%8C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Spring Framework Interview.webp&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OWF4V/btsJqco5K6j/XQPCzsABexPFcBY7h73yj0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OWF4V/btsJqco5K6j/XQPCzsABexPFcBY7h73yj0/img.webp&quot; data-alt=&quot;스프링 면접 완벽 대비! 필수 질문 50개 모음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OWF4V/btsJqco5K6j/XQPCzsABexPFcBY7h73yj0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOWF4V%2FbtsJqco5K6j%2FXQPCzsABexPFcBY7h73yj0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;1066&quot; data-filename=&quot;Spring Framework Interview.webp&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링 면접 완벽 대비! 필수 질문 50개 모음&lt;/figcaption&gt;
&lt;/figure&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;Spring은 엔터프라이즈 레벨의 애플리케이션을 구축하기 위해 널리 사용되는 자바 프레임워크 중 하나입니다. 다음은 Spring 인터뷰를 준비하는 데 도움이 될 50개의 주요 질문과 답변입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. Spring 프레임워크란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring 프레임워크는 자바 기반의 엔터프라이즈 애플리케이션을 구축하는 데 사용되는 강력하고 기능이 풍부하며 유연한 프레임워크입니다. 자바 애플리케이션 개발을 위한 포괄적인 인프라 지원을 제공합니다. Spring 프레임워크의 핵심 기능은 모든 자바 애플리케이션을 만드는 데 사용할 수 있으며, Java EE(Enterprise Edition) 플랫폼 위에 웹 애플리케이션을 구축할 수 있는 확장 기능도 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. Spring 프레임워크를 사용하는 장점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;경량성&lt;/b&gt;: Spring은 크기와 투명성(Transparency) 측면에서 경량입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제어의 역전(Inversion of Control, IoC)&lt;/b&gt;: Spring은 IoC를 사용하여 객체의 생명주기와 종속성을 관리합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)&lt;/b&gt;: Spring은 로깅, 보안 등의 횡단 관심사를 분리하기 위해 AOP를 지원합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;트랜잭션 관리&lt;/b&gt;: Spring은 포괄적인 트랜잭션 관리 인터페이스를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MVC 프레임워크&lt;/b&gt;: Spring은 웹 애플리케이션을 구축하기 위한 강력한 MVC 프레임워크를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;통합(Integration)&lt;/b&gt;: Spring은 Hibernate, JPA, EJB 등 다양한 기술과 쉽게 통합됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Spring 프레임워크의 핵심 모듈은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring 프레임워크의 핵심 모듈은 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Spring Core&lt;/b&gt;: IoC와 의존성 주입 기능을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring AOP&lt;/b&gt;: 관점 지향 프로그래밍 지원을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring ORM&lt;/b&gt;: Hibernate, JPA 등의 ORM 프레임워크와의 통합을 지원합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring DAO&lt;/b&gt;: 데이터베이스 상호작용을 간소화하는 JDBC 추상화 계층을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring Context&lt;/b&gt;: Spring 애플리케이션에 대한 컨텍스트 정보를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring Web&lt;/b&gt;: 웹 지향 통합 기능을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring MVC&lt;/b&gt;: Model-View-Controller 아키텍처 및 구성 요소를 제공합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. 제어의 역전(Inversion of Control, IoC)이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: 제어의 역전(IoC)은 객체 생성과 종속성 관리를 애플리케이션 코드에서 컨테이너나 프레임워크로 넘기는 설계 원칙입니다. Spring에서는 IoC가 의존성 주입(Dependency Injection, DI)을 통해 구현됩니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. 의존성 주입(Dependency Injection, DI)이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: 의존성 주입(DI)은 객체의 종속성을 객체 자신이 아닌 외부 엔티티(일반적으로 프레임워크)가 주입하는 기술입니다. 이를 통해 느슨한 결합 코드를 작성할 수 있으며 테스트 용이성을 높일 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;public class Car {
    private Engine engine;

    // 생성자 기반 DI
    public Car(Engine engine) {
        this.engine = engine;
    }

    // Setter 기반 DI
    public void setEngine(Engine engine) {
        this.engine = engine;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6. Spring에서 의존성 주입의 종류는 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;생성자 주입&lt;/b&gt;: 생성자를 통해 종속성을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;세터 주입&lt;/b&gt;: Setter 메서드를 통해 종속성을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;필드 주입&lt;/b&gt;: 종속성이 필드에 직접 주입됩니다(테스트 및 유지보수 문제로 인해 권장되지 않음).&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;7. Spring Bean이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Bean은 Spring IoC 컨테이너에 의해 인스턴스화되고 구성되며 관리되는 객체입니다. Bean은 Spring 애플리케이션의 구성 요소이며, Spring 설정 파일에 정의되거나 @Component, @Service, @Repository, @Controller 등의 애노테이션으로 표시됩니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;8. Spring Bean을 정의하는 방법은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Bean은 다음과 같은 방법으로 정의할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;XML 설정&lt;/b&gt;:
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;bean id=&quot;myBean&quot; class=&quot;com.example.MyBean&quot;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자바 기반 설정&lt;/b&gt;:
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;@Configuration 
public class AppConfig {     
  @Bean     
  public MyBean myBean() {         
      return new MyBean();     
  } 
}&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;애노테이션&lt;/b&gt;:
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Component 
public class MyBean { }&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;9. Spring Bean 생명주기는 어떻게 되나요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Bean의 생명주기는 다음과 같은 단계로 구성됩니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;인스턴스화&lt;/b&gt;: 컨테이너가 Bean 인스턴스를 생성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;속성 설정&lt;/b&gt;: 컨테이너가 Bean의 속성을 설정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BeanNameAware 및 BeanFactoryAware 콜백&lt;/b&gt;: Bean은 자신의 이름과 소유 팩토리에 접근할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;초기화 전 BeanPostProcessor&lt;/b&gt;: Bean 초기화 메서드가 호출되기 전입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;InitializingBean 인터페이스 및 사용자 정의 초기화 메서드&lt;/b&gt;: afterPropertiesSet 메서드 또는 사용자 정의 초기화 메서드가 호출됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;초기화 후 BeanPostProcessor&lt;/b&gt;: Bean 초기화 메서드가 호출된 후입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Bean 사용 준비 완료&lt;/b&gt;: Bean이 완전히 초기화되어 사용 준비가 완료되었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DisposableBean 인터페이스 및 사용자 정의 소멸 메서드&lt;/b&gt;: Bean이 소멸될 때 destroy 메서드 또는 사용자 정의 소멸 메서드가 호출됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;10. @Component, @Service, @Repository, @Controller 애노테이션의 차이점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;@Component&lt;/b&gt;: Spring이 관리하는 모든 구성 요소에 대한 일반적인 스테레오타입 애노테이션입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@Service&lt;/b&gt;: 서비스 레이어 구성 요소를 위한 @Component의 특수화입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@Repository&lt;/b&gt;: DAO(Data Access Object) 구성 요소를 위한 @Component의 특수화로, 예외 번역 등의 추가 기능을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@Controller&lt;/b&gt;: 웹 컨트롤러 구성 요소를 위한 @Component의 특수화입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;11. Spring Boot란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Boot는 Spring 프레임워크 위에 구축된 프로젝트로, 제품 단계(Production Ready)&lt;span&gt;&amp;nbsp;&lt;/span&gt;의 애플리케이션 개발을 간소화합니다. Spring Boot는 임베디드 서버, 보안, 메트릭스, 외부화된 설정과 같은 다양한 비기능적 기능을 제공하여 개발자가 최소한의 설정으로 애플리케이션을 빠르게 구축할 수 있도록 돕습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;12. Spring Boot를 사용하는 장점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;설정보다 관례(Convention over Configuration)&lt;/b&gt;: 설정 필요성을 최소화합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;독립 실행형 애플리케이션&lt;/b&gt;: Tomcat, Jetty, Undertow와 같은 임베디드 서버를 사용하여 독립 실행형 애플리케이션을 만들 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제품 단계(Production Ready) 기능&lt;/b&gt;: 건강 체크, 메트릭스, 외부화된 설정과 같은 기능을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;간편한 의존성 관리&lt;/b&gt;: 스타터를 사용하여 의존성 관리를 간소화합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;13. Spring Boot 애플리케이션을 만드는 방법은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Boot 애플리케이션은 Spring Initializr를 사용하여 만들 수 있으며, 이는 start.spring.io에서 사용할 수 있습니다. 또한 필요한 의존성을 pom.xml 또는 build.gradle 파일에 포함시키고, 메인 클래스를 @SpringBootApplication으로 어노테이트하여 수동으로 생성할 수도 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;14. @SpringBootApplication 애노테이션이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @SpringBootApplication 애노테이션은 다음 세 가지 애노테이션의 조합입니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;@Configuration&lt;/b&gt;: 이 클래스가 Spring IoC 컨테이너에 의해 Bean 정의의 소스로 사용될 수 있음을 나타냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@EnableAutoConfiguration&lt;/b&gt;: 클래스 경로 설정, 다른 Bean 및 다양한 속성 설정을 기반으로 Spring Boot가 자동으로 Bean을 추가하기 시작하도록 지시합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@ComponentScan&lt;/b&gt;: 웹 컨트롤러 클래스 및 기타 구성 요소를 자동으로 검색하고 Spring 애플리케이션 컨텍스트에서 Bean으로 등록할 수 있도록 구성 요소 스캐닝을 활성화합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;15. Spring Data JPA란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Data JPA는 더 큰 Spring Data 가족의 일부입니다. 데이터 액세스 계층 개발을 간소화하여 데이터 액세스를 위한 반복적인 코드를 줄입니다. JPA(Java Persistence API)를 사용하여 데이터 액세스를 수행하며, CRUD 작업을 위한 인터페이스인 리포지토리를 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;16. Spring Repository란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Repository는 데이터 액세스 기술에 대한 추상화입니다. Spring Data JPA의 일부이며 @Repository로 애노테이트됩니다. 리포지토리는 데이터베이스와 상호작용하기 위한 CRUD 작업 및 쿼리 메서드를 제공합니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Repository
public interface UserRepository extends JpaRepository&amp;lt;User, Long&amp;gt; {
    List&amp;lt;User&amp;gt; findByLastName(String lastName);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;17. CrudRepository와 JpaRepository의 차이점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;CrudRepository&lt;/b&gt;: CRUD 작업을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JpaRepository&lt;/b&gt;: CrudRepository와 PagingAndSortingRepository를 확장합니다. JPA와 관련된 추가 작업(예: 영속성 컨텍스트 플러싱, 배치에서 레코드 삭제)을 제공합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;18. Spring MVC란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring MVC(Model-View-Controller)는 유연하고 느슨하게 결합된 웹 애플리케이션을 개발할 수 있는 모델-뷰-컨트롤러 아키텍처와 준비된 구성 요소를 제공하는 웹 프레임워크입니다. MVC 패턴은 애플리케이션의 다양한 측면(입력 로직, 비즈니스 로직, UI 로직)을 분리하면서 이러한 요소들 간의 느슨한 결합을 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;19. DispatcherServlet이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: DispatcherServlet은 Spring MVC 프레임워크에서 프론트 컨트롤러 역할을 합니다. 이 서블릿은 들어오는 요청을 적절한 핸들러로 디스패치하고, 요청을 처리한 후 적절한 응답을 생성하는 책임이 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;20. Spring AOP에서 Advice의 종류는 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Before Advice&lt;/b&gt;: 메서드 실행 전에 실행됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;After Returning Advice&lt;/b&gt;: 메서드가 결과를 반환한 후에 실행됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;After Throwing Advice&lt;/b&gt;: 메서드가 예외를 던진 후에 실행됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;After (Finally) Advice&lt;/b&gt;: 메서드가 완료된 후, 결과와 상관없이 실행됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Around Advice&lt;/b&gt;: 메서드 실행 전과 후에 실행됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Aspect
public class LoggingAspect {

    @Before(&quot;execution(* com.example.service.*.*(..))&quot;)
    public void logBefore(JoinPoint joinPoint) {
        System.out.println(&quot;Method called: &quot; + joinPoint.getSignature().getName());
    }

    @AfterReturning(pointcut = &quot;execution(* com.example.service.*.*(..))&quot;, returning = &quot;result&quot;)
    public void logAfterReturning(JoinPoint joinPoint, Object result) {
        System.out.println(&quot;Method returned: &quot; + joinPoint.getSignature().getName());
        System.out.println(&quot;Result: &quot; + result);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;21. @Transactional 애노테이션이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @Transactional 애노테이션은 Spring에서 선언적으로 트랜잭션을 관리하는 데 사용됩니다. 메서드나 클래스에 적용되어 트랜잭션의 범위를 정의할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Service
public class UserService {

    @Transactional
    public void createUser(User user) {
        // 트랜잭션 코드
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;22. Spring Profiles이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Profiles는 애플리케이션 구성의 일부를 분리하여 특정 환경에서만 사용할 수 있도록 하는 방법을 제공합니다. 이는 개발, 테스트, 프로덕션 환경을 위한 다양한 구성을 관리하는 데 특히 유용합니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Profile(&quot;dev&quot;)
@Configuration
public class DevConfig {
    // 개발 환경에 특화된 빈들
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;23. Spring Security란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Security는 자바 애플리케이션을 위한 포괄적이고 고도로 커스터마이징 가능한 인증 및 접근 제어 프레임워크입니다. CSRF, 세션 고정 등과 같은 일반적인 보안 위협으로부터 애플리케이션을 보호합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;24. Spring Security의 주요 구성 요소는 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;인증(Authentication)&lt;/b&gt;: 사용자가 인증되었는지 여부를 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;권한 부여(Authorization)&lt;/b&gt;: 인증된 사용자가 특정 리소스에 접근할 수 있는지 여부를 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;서블릿 필터(Servlet Filters)&lt;/b&gt;: 인증 및 권한 부여를 위한 다양한 필터를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안 컨텍스트(Security Context)&lt;/b&gt;: 현재 실행 스레드에 대한 보안 정보를 보유합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;25. Spring Boot 애플리케이션에서 보안을 구현하는 방법은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Boot 애플리케이션에서 보안을 구현하려면 spring-boot-starter-security 의존성을 추가하고 SecurityConfig 클래스를 구성해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers(&quot;/public/**&quot;).permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin().permitAll();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;26. @RequestMapping과 @GetMapping의 차이점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;@RequestMapping&lt;/b&gt;: MVC 및 REST 컨트롤러의 핸들러 메서드에 웹 요청을 매핑하는 데 사용됩니다. method 속성을 지정하여 모든 HTTP 메서드를 처리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@GetMapping&lt;/b&gt;: @RequestMapping의 특수 버전으로, @RequestMapping(method = RequestMethod.GET)을 대체합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;@RestController
public class MyController {

    @RequestMapping(value = &quot;/hello&quot;, method = RequestMethod.GET)
    public String hello() {
        return &quot;Hello, World!&quot;;
    }

    @GetMapping(&quot;/hi&quot;)
    public String hi() {
        return &quot;Hi, World!&quot;;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;27. Spring Bean Scope란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Bean의 범위는 Spring 컨텍스트 내에서 해당 Bean의 생명주기와 가시성을 정의합니다. 일반적인 Bean 범위는 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Singleton&lt;/b&gt;: 하나의 인스턴스가 생성되어 공유됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Prototype&lt;/b&gt;: Bean이 요청될 때마다 새 인스턴스가 생성됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Request&lt;/b&gt;: HTTP 요청마다 새 인스턴스가 생성됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Session&lt;/b&gt;: HTTP 세션마다 새 인스턴스가 생성됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Global-Session&lt;/b&gt;: 글로벌 HTTP 세션마다 새 인스턴스가 생성됩니다(포틀릿 기반 애플리케이션에서 사용).&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;28. Spring Bean에 대해 프로토타입 범위를 정의하는 방법은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @Scope 애노테이션 또는 XML 설정을 사용하여 프로토타입 범위를 정의할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Component
@Scope(&quot;prototype&quot;)
public class PrototypeBean {
    // Bean 정의
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;29. Spring Actuator란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Actuator는 Spring Boot의 서브 프로젝트로, 애플리케이션을 모니터링하고 관리할 수 있는 프로덕션 제품 단계( Production Ready)을 제공합니다. 건강 체크, 메트릭스, 정보 등의 엔드포인트를 포함합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;30. Spring Boot 애플리케이션에서 Spring Actuator를 활성화하는 방법은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Actuator는 프로젝트에 spring-boot-starter-actuator 의존성을 추가하여 활성화할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-actuator&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;31. Spring Cloud란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Cloud는 개발자가 분산 시스템에서 공통적으로 사용되는 패턴(예: 구성 관리, 서비스 검색, 회로 차단기, 지능형 라우팅, 마이크로 프록시, 제어 버스, 일회용 토큰 등)을 빠르게 구축할 수 있는 도구를 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;32. Spring Cloud Config란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Cloud Config는 분산 시스템에서 외부화된 구성을 지원하는 서버 및 클라이언트 측 지원을 제공합니다. Config Server를 사용하면 모든 환경에서 애플리케이션에 대한 외부 속성을 중앙에서 관리할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;33. Spring Boot Starter란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Boot Starters는 애플리케이션에 종속성을 추가하는 과정을 간소화하는 의존성 기술자입니다. 사용하기 편리한 종속성 기술자 세트를 제공하여 애플리케이션에 포함할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;34. Spring Initializr란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Initializr는 Spring 팀이 제공하는 웹 기반 도구로, 새로운 Spring Boot 프로젝트를 부트스트랩할 수 있습니다. 필요한 종속성을 선택하고 프로젝트 구조를 생성하여 zip 파일로 다운로드하거나 IDE로 직접 가져올 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;35. @Controller와 @RestController의 차이점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;@Controller&lt;/b&gt;: 뷰를 반환하는 웹 컨트롤러를 정의하는 데 사용됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;@RestController&lt;/b&gt;: @Controller와 @ResponseBody를 결합한 편리한 애노테이션입니다. RESTful 웹 서비스를 만들고 응답 본문을 직접 반환하는 데 사용됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Controller
public class MyController {

    @GetMapping(&quot;/view&quot;)
    public String view() {
        return &quot;viewName&quot;;
    }
}

@RestController
public class MyRestController {

    @GetMapping(&quot;/data&quot;)
    public String data() {
        return &quot;Hello, World!&quot;;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;36. @RequestParam 애노테이션이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @RequestParam 애노테이션은 요청 URL에서 쿼리 매개변수, 폼 매개변수 또는 기타 매개변수를 추출하는 데 사용됩니다.&lt;/p&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;@RestController
public class MyController {

    @GetMapping(&quot;/greet&quot;)
    public String greet(@RequestParam(name = &quot;name&quot;, defaultValue = &quot;World&quot;) String name) {
        return &quot;Hello, &quot; + name + &quot;!&quot;;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;37. @PathVariable 애노테이션이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @PathVariable 애노테이션은 URI 경로에서 값을 추출하는 데 사용됩니다.&lt;/p&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;@RestController
public class MyController {

    @GetMapping(&quot;/user/{id}&quot;)
    public String getUser(@PathVariable(&quot;id&quot;) String userId) {
        return &quot;User ID: &quot; + userId;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;38. Spring Batch란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Batch는 배치 처리 &amp;mdash; 일련의 작업을 실행하기 위한 프레임워크입니다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 스킵, 리소스 관리 등을 포함한 대량 레코드 처리에 필수적인 재사용 가능한 기능을 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;39. Spring Boot DevTools란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Boot DevTools는 개발 경험을 향상시킬 수 있는 도구 세트입니다. 자동 재시작, 라이브 리로드, 개발용 구성 등의 기능을 포함합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;40. @Configuration 애노테이션의 용도는 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @Configuration 애노테이션은 Spring IoC 컨테이너에서 빈 정의의 소스로 사용할 수 있는 설정 클래스를 정의하는 데 사용됩니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;@Configuration
public class AppConfig {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;41. Spring Integration이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Integration은 엔터프라이즈 통합 패턴에 대한 지원을 제공하는 Spring 프로그래밍 모델의 확장입니다. Spring 기반 애플리케이션 내에서 경량 메시징을 가능하게 하며, 선언적 어댑터를 통해 외부 시스템과의 통합을 지원합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;42. Spring AMQP란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring AMQP(Advanced Message Queuing Protocol)는 메시지 지향 미들웨어에 대한 지원을 제공합니다. Spring JMS와 유사하게 메시징을 다루기 위한 추상화 및 공통 API 세트를 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;43. @Conditional 애노테이션이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @Conditional 애노테이션은 조건부로 빈을 생성할 수 있게 해줍니다. 빈을 생성해야 하는 조건을 정의하는 데 사용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;@Configuration
public class AppConfig {

    @Bean
    @Conditional(DevEnvironmentCondition.class)
    public MyBean myBean() {
        return new MyBean();
    }
}

public class DevEnvironmentCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return &quot;dev&quot;.equals(System.getProperty(&quot;env&quot;));
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;44. Spring WebFlux란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring WebFlux는 Spring 5 프레임워크의 일부로, 반응형 프로그래밍을 지원합니다. Reactive Streams API를 사용하여 비동기적이고 논블로킹 방식으로 웹 애플리케이션을 구축할 수 있는 방법을 제공합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;45. 반응형 프로그래밍이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: 반응형 프로그래밍은 비동기 데이터 스트림과 변화의 전파를 다루는 프로그래밍 패러다임입니다. 이를 통해 개발자는 더 견고하고 반응성이 뛰어난 애플리케이션을 구축할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;46. Spring WebFlux와 Spring MVC의 차이점은 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Spring MVC&lt;/b&gt;: 전통적인 서블릿 API를 기반으로 하며, 블로킹 방식입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring WebFlux&lt;/b&gt;: 반응형 프로그래밍 모델을 기반으로 하며, 논블로킹 방식입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;47. @RestControllerAdvice의 용도는 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @RestControllerAdvice 애노테이션은 RESTful 웹 서비스에서 전역적으로 예외를 처리하는 데 사용됩니다. 여러 @ExceptionHandler 메서드를 하나의 공유 구성 요소로 통합할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity&amp;lt;String&amp;gt; handleResourceNotFound(ResourceNotFoundException ex) {
        return new ResponseEntity&amp;lt;&amp;gt;(ex.getMessage(), HttpStatus.NOT_FOUND);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;48. Spring Retry란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: Spring Retry는 실패한 작업을 자동으로 다시 호출할 수 있는 기능을 제공합니다. 일시적인 오류를 처리하고 구성 가능한 백오프 정책을 통해 재시도를 수행할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;49. @Value 애노테이션이란 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @Value 애노테이션은 속성 파일, 시스템 속성 또는 환경 변수에서 필드에 값을 주입하는 데 사용됩니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Component
public class MyComponent {

    @Value(&quot;${app.name}&quot;)
    private String appName;

    @Value(&quot;#{systemProperties['user.name']}&quot;)
    private String userName;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;50. @Async 애노테이션의 용도는 무엇인가요?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변: @Async 애노테이션은 메서드를 비동기적으로 실행하도록 표시하는 데 사용됩니다. 메서드가 별도의 스레드에서 실행되도록 하여 호출자가 메서드가 완료될 때까지 기다리지 않고 계속 진행할 수 있게 합니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;@Service
public class MyService {

    @Async
    public void asyncMethod() {
        // 비동기 코드
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 질문과 답변은 Spring 프레임워크 인터뷰를 준비하는 데 필요한 탄탄한 기초를 제공할 것입니다. 각 주제는 주요 Spring 개념에 대한 지식과 이해를 테스트하고 실제 시나리오에서 어떻게 적용되는지를 다룹니다.&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;br /&gt;개발 관련 궁금증이나 고민이 있으신가요?&lt;br /&gt;아래 링크를 통해 저에게 바로 문의해 주세요! 쉽고 빠르게 도움 드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://linktr.ee/dannyseo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;'개발자서동우' 프로필 보기&lt;/a&gt;&lt;/p&gt;</description>
      <category> Development/Code</category>
      <category>50가지 면접 질문</category>
      <category>Spring</category>
      <category>Spring Framework</category>
      <category>spring interview</category>
      <category>백엔드 면접</category>
      <category>스프링 면접</category>
      <category>스프링 면접 대비</category>
      <category>스프링 프레임워크 면접</category>
      <author>Danny Seo</author>
      <guid isPermaLink="true">https://devloo.tistory.com/49</guid>
      <comments>https://devloo.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%A9%B4%EC%A0%91-%EC%99%84%EB%B2%BD-%EB%8C%80%EB%B9%84-%ED%95%84%EC%88%98-%EC%A7%88%EB%AC%B8-50%EA%B0%9C-%EB%AA%A8%EC%9D%8C#entry49comment</comments>
      <pubDate>Wed, 4 Sep 2024 00:21:17 +0900</pubDate>
    </item>
  </channel>
</rss>