<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>생각의 조각들</title>
    <link>https://thethoughtpieces.tistory.com/</link>
    <description>반가워요.</description>
    <language>ko</language>
    <pubDate>Thu, 8 Oct 2026 04:09:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>므호</managingEditor>
    <image>
      <title>생각의 조각들</title>
      <url>https://tistory1.daumcdn.net/tistory/7857578/attach/7f93a8d09eb24bd584684bbadbeb7a97</url>
      <link>https://thethoughtpieces.tistory.com</link>
    </image>
    <item>
      <title>.NET Aspire로 쉽고 빠르게 개발 환경 세팅하기</title>
      <link>https://thethoughtpieces.tistory.com/5</link>
      <description>&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker Compose를 이용하면 이러한 문제를 해결하고 빠르게 로컬 개발 환경 세팅을 할 수 있게 해줍니다. 하지만 API 서버, DB, 메시지 브로커(Kafka) 등을 로컬에 띄우기 위해 수십에서 수백 줄의 &lt;code&gt;docker-compose.yml&lt;/code&gt;을 작성해야 하고 &lt;code&gt;Dockerfile&lt;/code&gt;을 작성해야 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.NET Aspire은 복잡하고 번거로운 Docker Compose 작업을 간단하게 만들어줍니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;.NET Aspire란?&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aspire는 하나의 명령으로 전체 앱을 로컬로 시작하고 디버그한 다음, 동일한 컴퍼지션을 사용하여 어디서나 배포하는 Kubernetes을 제공합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aspire는 개발자들이 반복적으로 겪는 세 가지 핵심 문제점을 해결하는 데 초점을 맞춥니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Orchestration: 여러 프로젝트(.NET 등으로 구성한 앱)와 컨테이너(DB, 캐시 등)의 실행, 종료, 그리고 이들 간의 연결 구성을 담당합니다.&lt;/li&gt;
&lt;li&gt;Components: Redis, PostgreSQL, RabbitMQ 등과 같은 외부 의존성 서비스를 위한 NuGet 패키지를 제공합니다. 이 컴포넌트들은 단순 연결뿐만 아니라, 회복 탄력성(Resilience), 상태 확인(Health Checks), 텔레메트리(Telemetry) 설정이 기본적으로 포함되어 있습니다.&lt;/li&gt;
&lt;li&gt;Tooling: 로컬 개발 시 로그, 메트릭, 트레이싱을 통합하여 보여주는 강력한 대시보드와 IDE 통합 기능을 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aspire의 가장 매력적인 점은 YAML 파일이 아닌 C# 코드로 인프라를 정의한다는 것입니다. 인프라 구성도 컴파일 타임에 체크되는 Type Safe한 코드로 관리할 수 있다는 뜻입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;시작하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aspire를 사용하기 위한 준비사항은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;.NET 8+ SDK&lt;/li&gt;
&lt;li&gt;Visual Studio 2022+&lt;/li&gt;
&lt;li&gt;Docker Desktop 또는 Podman&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 Windows 11, .NET 8 SDK, Visual Studio 2026, Docker Desktop을 사용했습니다.&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;a href=&quot;https://github.com/muho2019/aspire-playground&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/muho2019/aspire-playground&lt;/a&gt; 에서 확인하실 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로젝트 생성&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AppHost&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio에서 &lt;code&gt;새 프로젝트 만들기&lt;/code&gt; - &lt;code&gt;Aspire AppHost&lt;/code&gt;를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coaUds/dJMcaiV5Rga/2BD1ZNttmNAuYLJKVjkSek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coaUds/dJMcaiV5Rga/2BD1ZNttmNAuYLJKVjkSek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coaUds/dJMcaiV5Rga/2BD1ZNttmNAuYLJKVjkSek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoaUds%2FdJMcaiV5Rga%2F2BD1ZNttmNAuYLJKVjkSek%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;888&quot; height=&quot;573&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 이름을 넣고 완료를 해줍니다. 그럼 다음처럼 AppHost 프로젝트가 생성되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blK8dX/dJMcabvWQEh/HXxAKGGlFDOsMUWKt3l5Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blK8dX/dJMcabvWQEh/HXxAKGGlFDOsMUWKt3l5Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blK8dX/dJMcabvWQEh/HXxAKGGlFDOsMUWKt3l5Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblK8dX%2FdJMcabvWQEh%2FHXxAKGGlFDOsMUWKt3l5Rk%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;291&quot; height=&quot;145&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&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;이번엔 &lt;code&gt;Aspire 서비스 기본값&lt;/code&gt; 이라는 프로젝트를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DQCnp/dJMcaaRlxHH/P7LkX4ZDjyElrsTQLxchmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DQCnp/dJMcaaRlxHH/P7LkX4ZDjyElrsTQLxchmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DQCnp/dJMcaaRlxHH/P7LkX4ZDjyElrsTQLxchmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDQCnp%2FdJMcaaRlxHH%2FP7LkX4ZDjyElrsTQLxchmk%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;464&quot; height=&quot;111&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트는 Aspire로 띄우는 컨테이너에 공통으로 적용되는 교차 편집 관심사(Cross-cutting concerns)를 모아둔 곳입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenTelemetry 설정, Health Checks, Resilience 정책 등이 미리 구현되어 있고 아래의 메서드를 각 서비스의 &lt;code&gt;Program.cs&lt;/code&gt;에 추가해주면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7wivt/dJMcahXffmt/4SHQoyKJHBU2fH00EeHZJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7wivt/dJMcahXffmt/4SHQoyKJHBU2fH00EeHZJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7wivt/dJMcahXffmt/4SHQoyKJHBU2fH00EeHZJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7wivt%2FdJMcahXffmt%2F4SHQoyKJHBU2fH00EeHZJK%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;823&quot; height=&quot;64&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Web API&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 Web API 프로젝트를 추가해보겠습니다. 프로젝트 추가 설정 중 맨 아래에 &lt;code&gt;.NET Aspire 오케스트레이션에 등록&lt;/code&gt;이라는 옵션이 있습니다. 해당 옵션을 체크하면 AppHost에 Web API가 자동으로 설정됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E2fiP/dJMcahiCYzn/fBXGvMsMT5xqJ9CJlevpP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E2fiP/dJMcahiCYzn/fBXGvMsMT5xqJ9CJlevpP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E2fiP/dJMcahiCYzn/fBXGvMsMT5xqJ9CJlevpP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE2fiP%2FdJMcahiCYzn%2FfBXGvMsMT5xqJ9CJlevpP1%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;888&quot; height=&quot;575&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;575&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설정&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AppHost 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 프로젝트 생성은 모두 끝났습니다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;// AppHost.cs

var builder = DistributedApplication.CreateBuilder(args);

// Web API 생성할 때 `.NET Aspire 오케스트레이션에 등록` 옵션을 체크하여 자동으로 추가된 코드입니다.
builder.AddProject&amp;lt;Projects.BlogAspireSample_Api&amp;gt;(&quot;blogaspiresample-api&quot;);

builder.Build().Run();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 오케스트레이션 설정을 해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 MSSQL과 Redis를 추가해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 패키지를 &lt;code&gt;AppHost&lt;/code&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;code&gt;Aspire.Hosting.SqlServer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Aspire.Hosting.Redis&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 &lt;code&gt;AppHost.cs&lt;/code&gt;에 다음과 같이 MSSQL, Redis 설정하는 코드를 추가해줍니다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;var builder = DistributedApplication.CreateBuilder(args);

// Add database service
var sqlServer = builder.AddSqlServer(&quot;db&quot;).AddDatabase(&quot;appdata&quot;);

// Add redis cache service
var redis = builder.AddRedis(&quot;cache&quot;);

// Web API 생성할 때 `.NET Aspire 오케스트레이션에 등록` 옵션을 체크하여 자동으로 추가된 코드입니다.
builder.AddProject&amp;lt;Projects.BlogAspireSample_Api&amp;gt;(&quot;blogaspiresample-api&quot;)
    .WithReference(sqlServer)
    .WithReference(redis);

builder.Build().Run();&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;WithReference()&lt;/code&gt;는 Aspire가 자동으로 환경 변수(Connection String)를 설정하여 해당 서비스(Web API)에 주입해 줍니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 오케스트레이션 설정이 끝입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 놀랍지 않나요? 만약 동일한 내용을 &lt;code&gt;docker-compose.yml&lt;/code&gt;로 작성하려면 수십~수백 줄을 작성해야 했을 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 DB가 실행된 후 API를 실행하려면 다음과 같이 코드를 추가해줍니다. &lt;code&gt;WaitFor()&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;builder.AddProject&amp;lt;Projects.BlogAspireSample_Api&amp;gt;(&quot;blogaspiresample-api&quot;)
    .WithReference(sqlServer)
    .WaitFor(sqlServer)
    .WithReference(redis)
    .WaitFor(redis);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Web API 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Web API에서 DB를 사용하기 위하여 다음의 패키지를 설치해줍니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;Aspire.Microsoft.EntityFrameworkCore.SqlServer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Aspire.StackExchange.Redis&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;Program.cs&lt;/code&gt;를 확인해보면 아래의 코드가 추가되어 있는 것을 보실 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;abnf&quot;&gt;&lt;code&gt;builder.AddServiceDefaults();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 바로 Aspire 서비스 기본값 프로젝트의 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Web API 프로젝트 생성할 때 &lt;code&gt;.NET Aspire 오케스트레이션에 등록&lt;/code&gt; 옵션을 선택했기 때문에 자동으로 추가되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 이제 DB 설정을 해보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;//  MSSQL DbContext 등록
// &quot;appdata&quot;는 AppHost에서 .AddDatabase(&quot;appdata&quot;)로 지정한 이름과 같아야 합니다.
// AppDbContext는 별도로 작성해주셔야 합니다. 잘 모르시겠다면 Entity Framework를 참고해주세요.
builder.AddSqlServerDbContext&amp;lt;AppDbContext&amp;gt;(&quot;appdata&quot;);

// Redis 캐시 등록
// &quot;cache&quot;는 AppHost에서 .AddRedis(&quot;cache&quot;)로 지정한 이름과 같아야 합니다.
builder.AddRedisClient(&quot;cache&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드의 주석에 있는 것처럼 &lt;code&gt;AppHost&lt;/code&gt;에서 설정한 DB의 이름과 동일한 이름을 사용해주면 자동으로 모든 설정이 주입됩니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설정 끝! 실행해볼까요?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 &lt;code&gt;BlogAspireSample.AppHost&lt;/code&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;바로 Aspire 프로젝트를 생성할 때 Aspire의 최신버전을 선택할 수 없다는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 Aspire의 최신 버전은 13입니다. 하지만 Aspire 프로젝트 생성 시에 선택할 수 있는 버전은 8, 9뿐입니다. 이로 인해 DB 관련 패키지를 설치할 때 해당 패키지를 최신 버전으로 설치했다면 버전이 서로 맞지 않아 실행에 실패하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDmoWE/dJMcaf6btJk/GikVK1Ux1kHX8D1eHfPUIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDmoWE/dJMcaf6btJk/GikVK1Ux1kHX8D1eHfPUIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDmoWE/dJMcaf6btJk/GikVK1Ux1kHX8D1eHfPUIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDmoWE%2FdJMcaf6btJk%2FGikVK1Ux1kHX8D1eHfPUIK%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;1035&quot; height=&quot;537&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;BlogAspireSample.AppHost&lt;/code&gt; 프로젝트의 nuget 패키지 관리에 들어가서 아래의 패키지를 최신 버전으로 업그레이드해줍니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;Aspire.Hosting.AppHost&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aspire 실행 전 Docker Desktop 실행은 필수입니다!&lt;/p&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;/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;1279&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jpm5S/dJMcagYj0Sk/ds4gpblifJiy0PGz9rKXBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jpm5S/dJMcagYj0Sk/ds4gpblifJiy0PGz9rKXBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jpm5S/dJMcagYj0Sk/ds4gpblifJiy0PGz9rKXBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJpm5S%2FdJMcagYj0Sk%2Fds4gpblifJiy0PGz9rKXBK%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;1279&quot; height=&quot;402&quot; data-origin-width=&quot;1279&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&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;.NET은 C#이라는 훌륭한 언어와 훌륭한 IDE인 Visual Studio를 가지고 있었지만 그동안 클라우드 네이티브 환경에서는 다소 부족한 점이 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 .NET Aspire를 이용하면 정말로 간단하게 인프라 구성을 할 수 있게 되었습니다.&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;.NET 컨테이너 환경에 적합하지 않다는 편견은 이제 옛말이 되었습니다.&lt;/p&gt;</description>
      <category>.NET</category>
      <category>.net</category>
      <category>.NET Aspire</category>
      <category>Aspire</category>
      <author>므호</author>
      <guid isPermaLink="true">https://thethoughtpieces.tistory.com/5</guid>
      <comments>https://thethoughtpieces.tistory.com/5#entry5comment</comments>
      <pubDate>Tue, 9 Dec 2025 22:36:42 +0900</pubDate>
    </item>
    <item>
      <title>f-lab(에프랩) 자바 백엔드 후기</title>
      <link>https://thethoughtpieces.tistory.com/4</link>
      <description>&lt;h3 data-end=&quot;626&quot; data-start=&quot;592&quot; data-ke-size=&quot;size23&quot;&gt;들어가며 &amp;ndash; 닷넷 개발자에서 새로운 도전을 결심하다&lt;/h3&gt;
&lt;p data-end=&quot;849&quot; data-start=&quot;627&quot; data-ke-size=&quot;size16&quot;&gt;만 6년 동안 닷넷(.NET) 기반의 웹 개발자로 일하며 안정적인 커리어를 쌓아왔지만, 마음 한켠에는 늘 &lt;b&gt;&amp;ldquo;이대로 괜찮을까?&amp;rdquo;&lt;/b&gt; 하는 질문이 있었습니다. 기술 생태계가 빠르게 변하는 가운데, 새로운 언어와 프레임워크에 대한 갈증이 커졌습니다. 그렇게 &lt;b&gt;자바 백엔드 개발자&lt;/b&gt;로의 전환을 결심했고, 방향을 잃지 않기 위해 선택한 것이 &lt;b&gt;에프랩(F-Lab)의 자바 백엔드 멘토링&lt;/b&gt;이었습니다.&lt;/p&gt;
&lt;hr data-end=&quot;854&quot; data-start=&quot;851&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;891&quot; data-start=&quot;856&quot; data-ke-size=&quot;size23&quot;&gt;멘토링을 선택한 이유 &amp;ndash; 방향을 잃지 않기 위한 결정&lt;/h3&gt;
&lt;p data-end=&quot;1091&quot; data-start=&quot;892&quot; data-ke-size=&quot;size16&quot;&gt;혼자 공부하며 언어 문법을 익히는 것은 어렵지 않았지만, 실무 감각을 유지하면서 새로운 언어의 철학과 프레임워크 구조를 이해하기란 쉽지 않았습니다. 무엇보다 제가 원한 것은 &lt;b&gt;&amp;ldquo;효율적인 학습이 아닌, 본질을 이해하는 성장&amp;rdquo;&lt;/b&gt;이었습니다. F-Lab은 단순한 강의가 아닌, 실무 기반의 코드 리뷰와 멘토링 중심의 시스템이었기에 제게 꼭 맞는 선택이었습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1096&quot; data-start=&quot;1093&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1128&quot; data-start=&quot;1098&quot; data-ke-size=&quot;size23&quot;&gt;과정 속에서의 변화 &amp;ndash; 기술보다 사고의 변화&lt;/h3&gt;
&lt;p data-end=&quot;1360&quot; data-start=&quot;1129&quot; data-ke-size=&quot;size16&quot;&gt;멘토링을 거치며 가장 크게 느낀 변화는 &lt;b&gt;사고방식의 변화&lt;/b&gt;였습니다. 단순히 자바와 스프링을 배우는 것을 넘어, 컴퓨터 사이언스의 기본 원리와 프레임워크의 내부 동작을 이해하려는 태도가 생겼습니다.&lt;br /&gt;이전에는 &amp;ldquo;이렇게 하면 된다&amp;rdquo; 수준이었다면, 지금은 &amp;ldquo;왜 이렇게 동작하는가?&amp;rdquo;를 끊임없이 묻습니다. 코드 한 줄을 작성하더라도 그 &lt;b&gt;이유와 설계 의도&lt;/b&gt;를 명확히 하려는 습관이 생긴 것이 가장 큰 수확입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1365&quot; data-start=&quot;1362&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1399&quot; data-start=&quot;1367&quot; data-ke-size=&quot;size23&quot;&gt;멘토님이 남긴 한마디 &amp;ndash; &amp;ldquo;왜 그렇게 했는가?&amp;rdquo;&lt;/h3&gt;
&lt;p data-end=&quot;1595&quot; data-start=&quot;1400&quot; data-ke-size=&quot;size16&quot;&gt;멘토님은 코드 리뷰 때마다 &amp;ldquo;&lt;b&gt;이 코드를 왜 이렇게 작성했나요?&lt;/b&gt;&amp;rdquo;라는 질문을 던지셨습니다.&lt;br /&gt;처음엔 부담스러웠지만, 점차 그 질문이 제 사고를 깊게 만들었습니다. 기술을 선택할 때마다, 어떤 아키텍처를 도입할 때마다 &amp;ldquo;왜&amp;rdquo;를 먼저 생각하는 습관이 자리잡았고, 이는 단순한 기술 숙련을 넘어 &lt;b&gt;주도적인 개발자&lt;/b&gt;로 성장하는 계기가 되었습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1600&quot; data-start=&quot;1597&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1633&quot; data-start=&quot;1602&quot; data-ke-size=&quot;size23&quot;&gt;프로젝트 경험 &amp;ndash; MSA와 EDA의 실전 감각&lt;/h3&gt;
&lt;p data-end=&quot;1879&quot; data-start=&quot;1634&quot; data-ke-size=&quot;size16&quot;&gt;멘토링 중 진행한 프로젝트에서는 이전 경력에서 경험하지 못했던 &lt;b&gt;MSA(Microservice Architecture)&lt;/b&gt;와 &lt;b&gt;EDA(Event-Driven Architecture)&lt;/b&gt;를 직접 코드로 구현했습니다.&lt;br /&gt;서비스 간의 경계를 설정하고, 이벤트 기반으로 시스템을 설계하며, 단순히 코드를 짜는 것이 아니라 &lt;b&gt;시스템을 구성하는 감각&lt;/b&gt;을 체득할 수 있었습니다. 이런 경험은 이직을 준비하며 기술적 자신감을 갖게 해주었습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1884&quot; data-start=&quot;1881&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1921&quot; data-start=&quot;1886&quot; data-ke-size=&quot;size23&quot;&gt;이직 준비 중의 배움 &amp;ndash; 코드로 말할 수 있는 자신감&lt;/h3&gt;
&lt;p data-end=&quot;2098&quot; data-start=&quot;1922&quot; data-ke-size=&quot;size16&quot;&gt;현재는 여러 회사의 채용 공고를 살피며 이직 도전을 이어가고 있습니다. 아직 결과는 진행 중이지만, F-Lab 멘토링을 통해 &lt;b&gt;코드로 제 생각을 설명할 수 있는 자신감&lt;/b&gt;을 얻었습니다. 면접을 준비하며 단순히 &amp;ldquo;무엇을 할 수 있다&amp;rdquo;가 아니라 &amp;ldquo;왜 그렇게 했다&amp;rdquo;를 논리적으로 전달할 수 있게 된 점이 큰 변화입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2103&quot; data-start=&quot;2100&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2139&quot; data-start=&quot;2105&quot; data-ke-size=&quot;size23&quot;&gt;멘토링의 장점과 단점 &amp;ndash; 배우려는 태도가 만든 차이&lt;/h3&gt;
&lt;p data-end=&quot;2363&quot; data-start=&quot;2140&quot; data-ke-size=&quot;size16&quot;&gt;F-Lab 멘토링의 가장 큰 장점은 &lt;b&gt;실무형 코드 리뷰&lt;/b&gt;와 &lt;b&gt;멘토의 깊이 있는 피드백&lt;/b&gt;입니다. 하지만 한 가지 명심해야 할 점이 있습니다.&lt;br /&gt;멘토링은 결코 &amp;lsquo;떠먹여주는&amp;rsquo; 과정이 아닙니다. 가만히 있으면 얻을 수 있는 것이 없습니다. 스스로 고민하고 질문하며 적극적으로 참여해야 비로소 그 가치가 드러납니다. &lt;b&gt;주도적으로 임할수록 성장의 폭이 커지는 과정&lt;/b&gt;이 바로 F-Lab 멘토링입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2368&quot; data-start=&quot;2365&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2405&quot; data-start=&quot;2370&quot; data-ke-size=&quot;size23&quot;&gt;마무리하며 &amp;ndash; 멘토링 이후의 나, 그리고 다음 단계로&lt;/h3&gt;
&lt;p data-end=&quot;2570&quot; data-start=&quot;2406&quot; data-ke-size=&quot;size16&quot;&gt;에프랩 자바 백엔드 멘토링은 제게 단순한 학습 과정이 아니라 &lt;b&gt;개발자로서 다시 태어난 경험&lt;/b&gt;이었습니다.&lt;br /&gt;이제 저는 &amp;ldquo;무엇을 아는가&amp;rdquo;보다 &amp;ldquo;왜 그렇게 하는가&amp;rdquo;를 고민하는 개발자가 되었습니다.&lt;br /&gt;앞으로의 커리어에서도 이 질문을 놓지 않고, 더 단단한 백엔드 개발자로 성장해 나갈 것입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2575&quot; data-start=&quot;2572&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2592&quot; data-start=&quot;2577&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;수료한 코스&lt;/h3&gt;
&lt;p data-end=&quot;2653&quot; data-start=&quot;2593&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;a href=&quot;https://f-lab.kr/mentoring-courses/java-backend&quot;&gt;자바 백엔드&lt;/a&gt;&lt;/p&gt;</description>
      <category>f-lab</category>
      <category>F-Lab 4개월 후기</category>
      <category>에프랩</category>
      <category>에프랩 4개월 후기</category>
      <category>자바 백엔드</category>
      <category>후기</category>
      <author>므호</author>
      <guid isPermaLink="true">https://thethoughtpieces.tistory.com/4</guid>
      <comments>https://thethoughtpieces.tistory.com/4#entry4comment</comments>
      <pubDate>Fri, 7 Nov 2025 12:17:03 +0900</pubDate>
    </item>
    <item>
      <title>f-lab(에프랩) 자바 백엔드 3개월 후기</title>
      <link>https://thethoughtpieces.tistory.com/3</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/obCXb/btsQ1YLzg9n/kFG4V5vFCnSk3AJhDjk9nk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/obCXb/btsQ1YLzg9n/kFG4V5vFCnSk3AJhDjk9nk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/obCXb/btsQ1YLzg9n/kFG4V5vFCnSk3AJhDjk9nk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FobCXb%2FbtsQ1YLzg9n%2FkFG4V5vFCnSk3AJhDjk9nk%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;934&quot; height=&quot;521&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&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;저의 현재 f-lab 자바 백엔드 멘토링 과정이 만 3개월을 지났습니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;열심히 프로젝트 작업!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저의 경우 기존에 C#만 사용해오다가 자바, 스프링으로 처음 작업을 하다보니 자바 컨벤션을 익히고 스프링에 익숙해지는 데 시간이 많이 소요가 되었어요.&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;실제 코드를 작성하는데 들이는 시간보다 어떻게 작성할 지 찾아보고 고민하는 데 시간이 많이 들은 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&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;한편으로는 굉장히 편리하지만 다른 한편으로는 속을 들여다보지 않으면 어떻게 동작하는 것인지 알기 어렵다는 점이 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;구현해야 할 기능은 많고 적응해야 할 새로운 개념들(ORM, MSA, 멀티모듈 등)이 워낙 많다보니 시간이 절대적으로 부족한 현실이네요.&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;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저에게는 이게 가장 어려운 점이었어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 구현이야 혼자서 어떻게든 해나가지만, 작업 완료 후 멘토님께 PR을 드리면 멘토링 시간에 리뷰를 받습니다.&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;만약 제가 내부동작에 대한 이해도가 어느정도 있고 동일한 로직을 다른 방법으로 구현할 수 있는 방법이 무엇이 있고 등의 내용을 알고 있다면 제대로 답변할 수 있겠지만, 바로 전에 언급했듯 저는 사용법에 익숙해지기 급급한 상태이거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다보니 &quot;왜&quot;에 대한 답을 할 수 없는 상태에요. 그래서 저의 답은 &quot;블로그를 찾아보니, AI에게 물어보니, 일반적으로 이걸 사용해서&quot;외엔 없었습니다 ㅠㅠ&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&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;한 달동안 어느정도 스프링에서 &quot;정체를&quot; 알아야 할 것에 대해 어느정도 알 게 된 것 같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이제부터는 프로젝트 작업을 하면서 스프링 내부 동작에 대한 이해를 하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면서 앞으로 남은 한 달동안 이력서도 작성하여 회사에 지원을 해보려고 해요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3개월을 돌아보며&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌이켜보면 제가 처음 f-lab을 시작할 때의 마음가짐을 잊어버린 것 같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;제가 참여하고 있는 F-Lab 자바 백엔드 과정이 궁금하다면? &lt;a title=&quot;[링크]&quot; href=&quot;https://f-lab.kr/mentoring-courses/java-backend&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://f-lab.kr/mentoring-courses/java-backend&lt;/a&gt;&lt;/p&gt;</description>
      <category>f-lab</category>
      <category>F-Lab 3개월 후기</category>
      <category>에프랩</category>
      <category>에프랩 3개월 후기</category>
      <category>자바 백엔드</category>
      <category>후기</category>
      <author>므호</author>
      <guid isPermaLink="true">https://thethoughtpieces.tistory.com/3</guid>
      <comments>https://thethoughtpieces.tistory.com/3#entry3comment</comments>
      <pubDate>Mon, 6 Oct 2025 21:07:56 +0900</pubDate>
    </item>
    <item>
      <title>f-lab(에프랩) 자바 백엔드 2개월 후기</title>
      <link>https://thethoughtpieces.tistory.com/2</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh0cO5/btsQm0IIJTh/R1gJcV8gLTmMR1ONlrI5u0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh0cO5/btsQm0IIJTh/R1gJcV8gLTmMR1ONlrI5u0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh0cO5/btsQm0IIJTh/R1gJcV8gLTmMR1ONlrI5u0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh0cO5%2FbtsQm0IIJTh%2FR1gJcV8gLTmMR1ONlrI5u0%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;934&quot; height=&quot;521&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&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;어느새 에프랩 멘토링 2개월이 되었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적인 사정으로 이번 2개월차는 제대로 하지 못해 아쉬움이 남는 한달이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 어떤 과정을 겪었는지 기록을 해보겠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2개월차에는 무엇을 할까?&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1주차 - Thread&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통은 첫 한달동안 이론에 대해 이야기를 나누고 2개월차에 바로 프로젝트에 들어가게 되어 있는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 같은 경우에는 제 준비가 미흡했어서 이론에 시간이 많이 들게 되었어요. 그래서 2개월차 1주차에도 이론에 대한 이야기를 나누게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;앞으로 계속해서 공부를 이어가야 할 것 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2주차 - 프로젝트 시작&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;저는 웹 개발자로 경력 대부분이 예약과 관련된 것이었습니다. 그렇다보니 자연스럽게 제가 친숙한 예약과 관련된 주제로 정하게 되었어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;다만 한 가지 요청하셨던 것은 'Gradle 멀티 모듈로 프로젝트를 구성하라'였습니다. 이는 다음 3주차 이야기!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3주차 - Gradle 멀티 모듈&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;사실 닷넷에서는 굉장히 편하게 설정할 수 있는 것들이 자바 환경에서는 아니더군요.. ㅠㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 덕분에 빌드툴에 대해 많이 배울 수 있었던 시간이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 그간 회사에 다니면서 MSA를 경험한 적이 없다보니 닷넷에서 하던 식으로 멀티 프로젝트를 구성하게 되었습니다. (닷넷에서는 모놀리식이라고 하더라도 기본적으로 여러 프로젝트로 나누어 관리하는 것이 오랜 관례였습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다보니 MSA에서는 필요없는 부분까지 제가 모듈로 만들게 되었고 이 부분에 대해 이야기를 나누었습니다. 하지만 이에 대해서도 멘토님께서는 '이렇게 해라, 저렇게 해라' 라는 식으로의 지도는 하지 않으셨어요. '이 부분에 대해 이런 저런 장점과 단점이 있을 수 있으니 조금 더 생각해보고 스스로 결정을 내려라' 라는 식으로의 지도를 하십니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 보면 '이렇게 해!' 라고 답정너로 하는 것이 멘티 입장에서는 생각할 필요없고 편할 수 있겠지만, 스스로 생각하는 힘을 기르는 것이 중요하다고 생각해요. 당연히 쉽지 않지만 이런 점이 에프랩 멘토링의 장점이자 매력이라고 볼 수 있겠네요!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4주차 - API 스펙 정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4주차는 개인적인 사유로 인하여 멘토링을 진행하지 못했습니다. ㅠㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;API 스펙 정하기는 실제 코딩에 들어가기 전에 각 API에 대한 스펙(엔드포인트, 리퀘스트/리스폰스 바디 등)을 미리 정하는 것이에요.&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;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 2개월차는 개인적인 사정으로 인하여 멘토링에 많은 시간을 쏟지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 시기에 너무 아쉽네요 ㅠ&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;다음 3개월차 후기에는 지금보다 훨씬 더 성장하기를!&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&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;&lt;a href=&quot;https://f-lab.kr/mentoring-courses/java-backend&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://f-lab.kr/mentoring-courses/java-backend&lt;/a&gt;&lt;/p&gt;</description>
      <category>f-lab</category>
      <category>f-lab 2개월 후기</category>
      <category>에프랩</category>
      <category>에프랩 2개월 후기</category>
      <category>자바 백엔드</category>
      <category>후기</category>
      <author>므호</author>
      <guid isPermaLink="true">https://thethoughtpieces.tistory.com/2</guid>
      <comments>https://thethoughtpieces.tistory.com/2#entry2comment</comments>
      <pubDate>Fri, 5 Sep 2025 15:37:52 +0900</pubDate>
    </item>
    <item>
      <title>f-lab(에프랩) 자바 백엔드 1개월 후기</title>
      <link>https://thethoughtpieces.tistory.com/1</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFIxj/btsPIG418tP/G7ZbPViwvmkF2PDNBkH7MK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFIxj/btsPIG418tP/G7ZbPViwvmkF2PDNBkH7MK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFIxj/btsPIG418tP/G7ZbPViwvmkF2PDNBkH7MK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFIxj%2FbtsPIG418tP%2FG7ZbPViwvmkF2PDNBkH7MK%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;934&quot; height=&quot;521&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&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;닷넷 웹 개발자로 바쁘게 회사 일을 하다보니 경력이 어느새 7년차가 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;업계 탑 티어의 선배 개발자분에게 1대1로 멘토링을 받을 수 있다는 점이 매우 매력적으로 느껴져 바로 신청하게 되었고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느새 약 한 달이 되었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1개월간의 학습 여정&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1주차 - 이력서 작성 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;재직했던 회사들을 나열하고 어떤 프로젝드를 했었는지 아주 간단하게 소개하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;단 한 번도 그런 관점으로 생각해보지 못했었는데 막상 얘기를 듣고보니 정말 '나'라는 사람에 대한 설명보다는 '내가 했던 프로젝트'에 대한 설명이 전부더라구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그 이후 멘토링이 진행되면서 이론 학습을 따라가느라 아직 이력서 완성을 하지는 못했지만 이번 달 중으로 이력서를 완성해보려고 합니다!&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2주차 - 클래스 로딩과 객체 생성 과정 with JVM&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대망의 첫 번째 이론 주제 멘토링!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난생 처음 접해보는 JVM과 클래스 로딩이라는 개념...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;'JVM 밑바닥까지 파헤치기'라는 책을 읽으며 평일 기준 2~4시간 매일 공부했습니다. 그래도 밑바닥이 워낙 없던 터라 정말로 어려웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그리고 원래 다음 시간에 해야 하는 GC도 함께 같이 설명해보라고 하셨어요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3주차 - Garbage Collection&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3주차는 지난 시간에 제대로 설명하지 못했던 내용과 함께 GC에 대해 아주 잠깐동안 이야기를 나누는 시간이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 약 2주동안 같은 내용을 반복해서 보니 어느정도 이해가 되기 시작하면서 머리에 들어오더라구요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이번 시간은 전체적으로 아주 만족스럽게 진행되었어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멘토님께서 질문하신 내용에 대해 100%는 아니지만 꽤 많이 대답했네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 확실히 멘토님께서 업계 탑 티어이어서 그런지 제가 알고 있는 내용에 대해서 새로운 시각을 제안해주시면서 다른 방향으로 생각을 해볼 수 있도록 유도해주셔서 정말 좋았어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멘토링이 진행되는 1시간이 정말 짧게 느껴졌습니다!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4주차 - G1 GC&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3주차에는 GC 얘기를 조금밖에 하지 못해서 이번 4주차에 제대로 이야기를 나누었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GC 모델 중 G1 GC를 주제로 진행되었고 GC 주제도 약 2주간 학습을 진행하여 멘토링 시간에 멘토님과 티키타카하며 즐거운 시간을 보냈습니다.&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;GC는 무엇인가요?&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;GC가 객체를 제거하는거에요?&quot;&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;그럼 GC는 어떻게 객체를 제거해요?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나: &quot;GC는 GC 루트로부터 루트 노드 열거 방식을 통해 ~~~ 해서 필요없는 객체를 찾고 제거합니다.&quot;&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;네??? 그러니까 GC 루트로부터 참조 체인을 통해 도달 가능한 객체에 모두 방문한 뒤에 필요없는 객체를 찾고 제거합니다.&quot;&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;아! G1은 메모리를 리전으로 구성하여 관리하고 도달 가능한 객체들을 모두 안전한 다른 리전으로 옮기고 기존 리전은 모두 비워버립니다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멘토님: &quot;그렇죠! 필요없는 객체는 영어로 Unreachable 그러니까 도달할 수 없다는 거에요. 그러니까 사실 GC는 '필요없는 객체를 모아서 제거한다'가 아니라 살려야 할 객체들을 소중하게 관리해서 잘 살 수 있도록 하는 행위인거에요'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;분명 공부할 때 살아있는 객체를 복사한 후 기존 메모리 영역을 비워버린다고 공부했었음에도 불구하고 GC는 '필요없는 객체(가비지)를 수거하고 제거하는 것'이라는 고정관념에서 빠져나오지 못했던 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 외에도 정말 많은 멘토님의 좋은 추가 설명도 많았지만 이번 시간은 고정관념을 벗어날 수 있는 시각을 제시해주신 것 하나만으로 정말 뜻 깊은 시간이었습니다! 멘토님 최고&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;F-Lab&amp;nbsp;멘토링의&amp;nbsp;특별한&amp;nbsp;점&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.&amp;nbsp;생각하는&amp;nbsp;법을&amp;nbsp;가르쳐준다&lt;/h3&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;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;br /&gt;단순히&amp;nbsp;지식을&amp;nbsp;전달하는&amp;nbsp;게&amp;nbsp;아니라,&amp;nbsp;논리적&amp;nbsp;사고력을&amp;nbsp;기를&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;도와줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.&amp;nbsp;완벽한&amp;nbsp;1:1&amp;nbsp;맞춤형&amp;nbsp;교육&lt;/h3&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;시간을&amp;nbsp;들여&amp;nbsp;설명해주시고,&amp;nbsp;빠르게&amp;nbsp;이해하는&amp;nbsp;부분은&amp;nbsp;더&amp;nbsp;깊이&amp;nbsp;들어가&amp;nbsp;주십니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3.&amp;nbsp;체계적인&amp;nbsp;학습&amp;nbsp;관리&amp;nbsp;시스템&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬랙을 통한 실시간 소통: 궁금한 것이 생기면 언제든 질문할 수 있어요&lt;br /&gt;멘토링&amp;nbsp;녹음&amp;nbsp;제공:&amp;nbsp;복습할&amp;nbsp;때&amp;nbsp;정말&amp;nbsp;유용해요&lt;br /&gt;주간&amp;nbsp;피드백:&amp;nbsp;멘토링&amp;nbsp;후&amp;nbsp;2시간&amp;nbsp;내에&amp;nbsp;핵심&amp;nbsp;내용과&amp;nbsp;추천&amp;nbsp;키워드가&amp;nbsp;정리되어&amp;nbsp;전달됩니다&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1개월&amp;nbsp;후&amp;nbsp;달라진&amp;nbsp;점들&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기술적&amp;nbsp;성장&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깊이 있는 이해: 이제 JVM, GC, Thread 등의 개념을 &quot;왜?&quot;까지 포함해서 설명할 수 있어요&lt;br /&gt;학습&amp;nbsp;방법의&amp;nbsp;변화:&amp;nbsp;표면적인&amp;nbsp;사용법이&amp;nbsp;아닌,&amp;nbsp;근본적인&amp;nbsp;원리부터&amp;nbsp;파악하는&amp;nbsp;습관이&amp;nbsp;생겼습니다&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;향상되었어요&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마인드셋의 변화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장&amp;nbsp;큰&amp;nbsp;변화는&amp;nbsp;**&quot;모르는&amp;nbsp;것을&amp;nbsp;인정하고&amp;nbsp;배우려는&amp;nbsp;자세&quot;**가&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;h3 data-ke-size=&quot;size23&quot;&gt;커뮤니케이션&amp;nbsp;스킬&lt;/h3&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;후기의&amp;nbsp;말처럼,&amp;nbsp;저도&amp;nbsp;처음에는&amp;nbsp;두괄식으로&amp;nbsp;명확하게&amp;nbsp;설명하는&amp;nbsp;게&amp;nbsp;어려웠어요.&amp;nbsp;하지만&amp;nbsp;1개월&amp;nbsp;동안&amp;nbsp;계속&amp;nbsp;연습하다&amp;nbsp;보니&amp;nbsp;많이&amp;nbsp;개선되었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;솔직한&amp;nbsp;단점들&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;높은&amp;nbsp;러닝커브&lt;/h3&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;필요합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;멘탈&amp;nbsp;관리의&amp;nbsp;중요성&lt;/h3&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;정말&amp;nbsp;자존감이&amp;nbsp;바닥까지&amp;nbsp;떨어질&amp;nbsp;수&amp;nbsp;있거든요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비용&amp;nbsp;부담&lt;/h3&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;생각합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;앞으로의&amp;nbsp;계획&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1개월을 마치고 나서 확실한 방향성을 얻었어요. 앞으로도 계속해서&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;실전 프로젝트: 2개월차부터는 프로젝트를 통해 이론을 실제로 적용해볼 예정&lt;/li&gt;
&lt;li&gt;블로그&amp;nbsp;정리:&amp;nbsp;배운&amp;nbsp;내용들을&amp;nbsp;정리해서&amp;nbsp;다른&amp;nbsp;개발자들과&amp;nbsp;공유하고&amp;nbsp;싶어요&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;1개월이라는&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;특히 &quot;제대로 공부하는 방법&quot;을 알게 된 것이 가장 큰 수확입니다. 물론 아직도 처음 접하는 개념들을 공부할 땐 여전히 헤메지만 어떤 방향으로 학습해야 할 지에 대해서는 확실히 잡힌 것 같아요!&lt;br /&gt;F-Lab은&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;앞으로 3개월이 남았고 3개월 뒤의 저는 어떻게 성장해 있을 지 너무나도 기대됩니다!&lt;/p&gt;</description>
      <category>f-lab</category>
      <category>f-lab 1개월 후기</category>
      <category>에프랩</category>
      <category>에프랩 1개월 후기</category>
      <category>자바 백엔드</category>
      <category>후기</category>
      <author>므호</author>
      <guid isPermaLink="true">https://thethoughtpieces.tistory.com/1</guid>
      <comments>https://thethoughtpieces.tistory.com/1#entry1comment</comments>
      <pubDate>Tue, 5 Aug 2025 20:59:49 +0900</pubDate>
    </item>
  </channel>
</rss>