All총 40개의 글이 있어요 👀

Argo CD, Linkerd 기반 QA 병목 제거: PR Preview 환경 구축

Kubernetes 기반 도구들을 활용하여 PR 단위 다중 환경 구성을 자동화함으로써 개발 및 QA 경험을 개선한 방법을 공유합니다.

2025.11.25
K8S
EKS
DX
Amazon S3 보관 비용과 이미지 CDN 트래픽 최적화

Intelligent Tiering 활성화 및 AVIF 포맷 도입으로 S3 보관 비용과 CDN 트래픽을 최적화한 경험을 공유합니다.

2025.10.29
AWS
S3
CDN
AVIF
강의실 모달 지옥에서 탈출하기: React useFunnel hook 설계

강의실에서 연달아 실행되는 함수와 모달 노출 로직의 복잡한 의존관계를 퍼널 패턴으로 리팩토링한 경험을 공유합니다.

2025.10.27
React
funnel
refactoring
EKS Bottlerocket AMI에서 DCGM 오류로 GPU 노드 반복 교체 문제 해결기

Amazon EKS Bottlerocket AMI 환경에서 DCGM 라이브러리 누락으로 GPU 노드가 비정상으로 판단되어 Karpenter에 의해 반복 교체되는 문제를 이벤트 로그 분석을 통해 해결한 과정을 공유합니다.

2025.08.27
EKS
Bottlerocket
GPU
DCGM
karpenter
사이드 프로젝트로 업무 효율화하기

자동으로 Google Tag Manager 요소를 생성해주는 웹사이트를 제작한 사이드 프로젝트 경험을 공유합니다.

2025.07.03
SideProject
GoogleTagManager
EKS Bottlerocket에서 이미지 캐싱으로 Pull 시간 줄이기

Bottlerocket에서 컨테이너 이미지를 EBS 스냅샷에 캐시하여 컨테이너 시작시 이미지 Pull 시간을 효과적으로 단축하는 방법을 소개합니다.

2025.04.21
K8S
EKS
BottleRocket
EBS
코드 리뷰 요정, CodeRabbit이 나타났다 🐰

AI 기반 코드 리뷰 서비스 Coderabbit을 소개합니다.

2025.03.26
coderabbit
AI
codereview
기존 서비스 국제화(i18n) 작업 쉽게 덜어내기: t 함수 자동 래핑 스크립트 만들기

한글 텍스트를 자동으로 추출하고 t 함수를 래핑하여 서비스의 국제화(i18n)를 쉽게 구현하는 방법을 설명합니다.

2025.02.06
i18n
translation
automation
script
신입 DevOps 엔지니어의 AI/ML 기반 자동화된 스팸 필터링 도입 경험기

AI/ML 전문가 없이 자동화된 스팸 필터링 도입과 개선기에 대해 공유합니다.

2024.12.05
Spam
ML
ChatGPT
AI
우리 팀에 맞는 VPN 찾기

VPN 솔루션 선택을 위해 고민한 과정과 고려했던 요소를 공유합니다.

2024.10.31
Network
VPN
OpenVPN
Wireguard
JDBC setReadOnly 호출 이슈 해결기

안녕하세요. 인프랩 백엔드 개발자 인트, 제이입니다. 인프랩의 백엔드 서버는 대부분 Node.JS로 구성되어 있지만 일부 JVM 서버도 함께 운영됩니다. JVM 서버의 경우 모니터링으로 핀포인트를 활용하고 있습니다. 최근에 핀포인트를 통해 간헐적으로 원인을 파악하기 어려운 에러 알림이 발생했었는데, 이에 대한 해결 경험을 공유하고자 합니다. 문제가 발생한 환경 Spring Boot 3.2.5 Spring JDBC 6.1.6 PostgreSQL Driver 42.6.2 AWS Advanced JDBC Wrapper 2.2.3 AWS Aurora PostgreSQL 14.9.6 문제 상황 핀포인트에서는 다음과 같은 에러 메시지를 확인할 수 있었습니다. 이번에 경험한 에러는 특정 API에서만 발생하는 게 아닌 불특정 조회 API에서 간헐적으로 발생했습니다. 에러 메시지는 다음과 같습니다. 핀포인트 로그를 보면 에러는 트랜잭션의 마지막에 commit과 close를 하는 과정에서 발생했습…

2024.09.01
JDBC
setReadOnly
Aurora
개발 파트 소개 - 3. 모바일 앱 개발 파트 (React Native)

인프랩 채용 공고 안녕하세요. 인프랩의 향로입니다. 저희 인프랩 개발팀은 현재 백엔드, 프론트엔드, 모바일 앱, 데브옵스 파트로 나뉘어져 있습니다. 각각의 개발 파트가 어떻게 일 하는지, 어떤 사람과 함께 하고 싶어하는지 등을 소개드리려 합니다. 세 번째로 모바일 앱 개발 파트를 소개드리겠습니다. 인프랩팀이 새롭게 모바일 앱 개발 파트를 구성하게 되었습니다. 코딩 교육 특성상 대부분의 사용자분들께서 PC 웹 브라우저를 주력으로 사용하시다보니 웹 서비스에 집중을 하게 되었습니다. 그동안은 웹 프론트엔드 개발자분들이 처음 앱을 출시하고, 웹 서비스를 메인으로 하면서 하면서 앱을 운영해왔는데요. 그러다보니 앱에 대한 여러 불편 사항을 제때 해결하지 못했습니다. [서비스] 모바일 앱 각 스토어에서 공개 중지 안내 그래서 인프런의 앱 서비스를 새롭게 개편하기로 결정하고, 이에 맞춰 React Native 기반의 모바일 앱 개발을 전담할 개발팀을 구성하게 되었습니다. 앞서 언급했듯이 인프랩 …

2024.04.23
team
app
mobile
react-native
개발 파트 소개 - 2. 웹 프론트엔드 파트

인프랩 채용 공고 안녕하세요. 인프랩의 향로입니다. 저희 인프랩 개발팀은 현재 백엔드, 프론트엔드, 모바일, 데브옵스 파트로 나뉘어져 있습니다. 각각의 개발 파트가 어떻게 일 하는지, 어떤 사람과 함께 하고 싶어하는지 등을 소개드리려 합니다. 두 번째로 웹프론트엔드 파트를 소개드리겠습니다. 지원하고자 하는 회사의 프론트엔드 개발자 채용 공고를 본다면 일반적으로 다음과 같은 궁금증이 생깁니다. 같이 일하게 될 사람들은 어떤 사람들일까? 배포 프로세스는 어떻게 될까? 자동화가 되어있을까? 코드리뷰는 하고 있는걸까? 서비스 기능 개발하기에 바빠서 각개전투 하는건 아닐까? 테스트 코드를 작성하고 있을까? 모니터링과 로깅은 제대로 구축되어있을까? 구성원의 성장을 위해 회사에서는 어떤 지원을 해줄까? 개발자의 성장에 있어 가장 중요한건 개인의 노력인데요. 그렇다면 회사에서 해줄 수 있는 것은 무엇일까요? 제 생각에는 그 사람이 성장할 수 있는 좋은 재료와 환경을 제공해주는 것이 아닐까 싶습니…

2024.04.23
team
frontend
web
개발 파트 소개 - 1. 백엔드 파트

인프랩 채용 공고 안녕하세요. 인프랩의 향로입니다. 저희 인프랩 개발팀은 현재 백엔드, 프론트엔드, 모바일, 데브옵스 파트로 나뉘어져 있습니다. 각각의 개발 파트가 어떻게 일 하는지, 어떤 사람과 함께 하고 싶어하는지 등을 소개드리려 합니다. 첫 번째로 백엔드 파트를 소개드리겠습니다. 지원하고자 하는 회사의 백엔드 개발자 채용 공고를 본다면 일반적으로 다음과 같은 궁금증이 생깁니다. 같이 일하게 될 사람들은 어떤 사람들일까? 배포 프로세스는 어떻게 될까? 자동화가 되어있을까? 코드리뷰는 하고 있는걸까? 서비스 기능 개발하기에 바빠서 각개전투 하는건 아닐까? 백엔드 역량 향상이 가능할 정도의 유의미한 트래픽이 발생하고 있을까? 테스트 코드를 작성하고 있을까? 모니터링과 로깅은 제대로 구축되어있을까? 구성원의 성장을 위해 회사에서는 어떤 지원을 해줄까? 개발자의 성장에 있어 가장 중요한건 개인의 노력인데요. 그렇다면 회사에서 해줄 수 있는 것은 무엇일까요? 제 생각에는 그 사람이 성장…

2024.04.23
team
backend
플랫폼 팀 없는 오픈 소스 기반의 디자인 시스템 구축 회고

인프랩이 지난 2년간 플랫폼 팀 없이 오픈 소스를 이용해 디자인 시스템을 만들고 운영한 경험과 그 과정에서 했던 고민들을 공유합니다.

2024.03.04
인프런 콘텐츠에 동적으로 생성되는 Open Graph(OG) 이미지 적용하기

Next.js로 OG 이미지 동적 생성기를 개발한 경험을 공유합니다.

2024.02.29
opengraph
vercel
Next.js
Node.js
스타트업 엔지니어의 AWS 비용 최적화 경험기

인프랩이 어떻게 월 $25,000 넘게 AWS 비용을 절약할 수 있었는지 경험과 노하우를 소개합니다.

2024.02.27
FinOps
AWS
Cost-Optimization
Startup-Strategies
Cloud-Efficiency
인프랩 데브옵스 팀 6주 인턴십

6주동안 인프랩 데브옵스 팀으로써 일하면서 배운 것들 또는 경험한 것들을 공유합니다.

2024.02.23
Intern
Review
개발-운영 생산성 모니터링하기 (with Devlake, Grafana)

DevOps 생산성을 측정하기 위한 DORA 메트릭 대시보드 구성 경험을 공유합니다.

2024.02.21
DORA-Metrics
Grafana
Devlake
인프랩 IaC 구축기 (Part 1)

인프랩이 인프라 관리를 잘하기 위해 쌓아온 기술과 과정을 공유합니다.

2024.02.01
AWS
IaC
Pulumi
Spring Boot & JPA에서 Java와 Kotlin을 함께 사용하기

Spring Boot & JPA 환경에서 Java와 Kotlin을 함께 사용한 이유와 사용 예제를 소개합니다.

2024.01.10
Spring
Java
Kotlin
인프랩 개발팀의 미션과 가치

안녕하세요 인프랩의 향로입니다. 최근 인프랩 팀은 적극적으로 개발자 채용을 하고 있습니다. 인프랩 채용 공고 지원하시는 분들 입장에서는 인프랩 개발팀은 어떤 것을 추구할까, 나와 가치관이 비슷할까 등등의 고민이 있을 수 있습니다. 그래서 저희 개발팀이 추구하는 미션과 가치를 소개합니다. 저희팀의 미션과 가치에 공감이 되신 분들이라면 언제든 인프랩 팀에 지원해주세요. 이후부터는 평어체를 사용합니다. 아래 내용은 조직이 더 커질때마다 더 추가될 수 있습니다. 1. 개발팀의 미션 “프로덕트 엔지니어로서 내/외부 고객의 신뢰를 얻기 위해 적절한 시기에 적합한 도구로 고객의 문제를 해결한다” 외부의 고객: 서비스를 사용하는 사용자 내부의 고객: 개발팀을 필요로 하는 사내 모든 구성원들 적합한 도구를 선택하기 보다 먼저 방점이 찍혀있는 것은 적절한 시기이다. 어떤 문제는 당장 해결이 필요로 하고, 어떤 문제는 당장 해결할 필요가 없다. 내/외부 고객의 문제를 만난다면 그걸 언제까지 해결하는 …

2023.11.17
team
mission
CI 소요시간을 최대 4.6배 개선하는 방법

Jenkins CI 환경에서 Turborepo 기반 모노레포 CI 소요시간을 최대 4.6배 개선한 경험과 pnpm 의존성 캐시 및 Turbo Task 캐시를 Jenkins 에이전트 간에 공유하는 방법을 소개합니다.

2023.11.01
Jenkins
CI
Turborepo
pnpm
frontend
인프런이 자동으로 자막을 생성하기까지 (AI/인프라 편)

인프런에 도입된 AI 자동 자막 생성 기능이 어떤 과정을 거쳐 만들어졌는지 공유합니다.

2023.10.31
Whisper
AWS
GPU
랠릿 standalone 적용기

랠릿 B2C 패키지에서 Docker 를 이용하여 어떻게 standalone 을 적용했는지에 대해 설명합니다.

2023.09.18
Rallit
Docker
Next.js
standalone
변화에 유연한 HTTP 클라이언트 만들기

특정 라이브러리에 종속되지 않고 쉽게 테스트할 수 있는 HTTP 클라이언트를 만드는 방법을 소개합니다.

2023.07.23
http-client
interface
Code generator 개발기 (Part 2)

Code generator의 구현 과정을 공유합니다.

2023.07.03
code-generator
Code generator 개발기 (Part 1)

Code generator를 만들기까지의 고민을 공유합니다.

2023.06.19
code-generator
테스트 코드를 왜 그리고 어떻게 작성해야 할까?

테스트 코드가 필요한 이유와 잘 작성하는 방법에 대해 공유합니다.

2023.04.11
test
jest
MongoDB Atlas Search 정렬이슈 해결기

MongoDB Atlas Search을 검색엔진으로 사용하면서 겪었던 이슈와 해결과정을 공유합니다.

2022.11.16
Atlas
MongoDB
Code With Me를 활용한 페어 프로그래밍

Code With Me를 통한 페어 프로그래밍 경험을 공유합니다.

2022.11.16
pair
programming
shadow DOM으로 신규 프로젝트의 스타일을 지키는 방법

기존 인프런 서비스를 유지하면서 일부분을 모던하게 개선하기 위해서는, 스타일 충돌이 필연적으로 발생합니다. 이를 shadow DOM을 이용해 해결한 과정을 공유합니다.

2022.08.31
legacy
frontend
react-hook-form을 선택한 이유와 적용 과정

IT 채용 플랫폼 랠릿의 거대한 Form을 react-hook-form으로 마이그레이션한 이유와 과정을 공유합니다.

2022.07.19
React
react-hook-form
Form
React Form 컴포넌트 개발기

인트로 안녕하세요 인프랩 프론트엔드 개발자 라비입니다:) 온라인 강의 플랫폼 인프런을 서비스하고 있는 저희는 올해 초 채용 서비스인 랠릿을 런칭했는데요. Vanilla JS로 개발한 인프런과 달리 React를 사용하여 웹 페이지를 개발하면서, 특히 이력서라는 특성상 복잡한 폼을 다루면서 렌더링 성능 이슈 등 다양한 문제에 직면했고, 이를 해결하기 위한 다양한 고민 과정을 정리하여 글로 공유하려고 합니다. 랠릿에는 한 페이지에 최대 700여개의 인풋창이 렌더링되는 개인 프로필 페이지와 지원서 작성하기 페이지가 존재합니다. 구직자가 이력서를 작성할 때 필요로 하는 최대한 다양한 유형의 정보를 한 페이지에서 입력하고 관리할 수 있도록 하기 위함입니다. 구직자 입장에서는 여러 페이지를 오고가면서 정보를 관리할 필요 없이 단일 페이지에서 자신의 모든 이력을 관리할 수 있기 때문에 편리하지만, Input, Select 등 다양한 Form Control의 값과 유효성 등의 상태를 관리하는 입장…

2022.07.19
React
react-hook-form
상태관리
Form
강의실 개편

올해 저희 개발팀에서 기존 인프런 서비스 코드를 신규 스택으로 개편하는 프로젝트를 진행하였습니다. 여러 서비스 중 강의실 페이지 개선이 첫 번째 목표였고 최근 작업이 완료되었습니다. 이번 포스트에서는 프로젝트 진행에서 겪은 경험을 공유하고자 합니다. 개편의 필요성 기존 인프런 프로젝트는 다음과 같은 스택으로 구성되어 있습니다. Node.Js Postgresql Express FxJS MQL FxDOM FxJS 과 같은 함수형 라이브러리와 FxSQL 이라 불리는 쿼리빌더보다 더 이전에 나온 MQL2 를 사용합니다. 본 포스트에서는 같은 Fx 기반의 라이브러리임을 표시하기 위해 MQL 대신 FxSQL 으로 기술하겠습니다. 대부분의 애플리케이션 로직은 의 함수를 활용해 여러 단위의 함수를 합성하는 형태로 이루어져 있습니다. 아래 코드를 보시면 sql 을 실행한 결과로부터 시작해 , 같은 함수를 사용해 가공작업을 진행합니다. 유인동님의 함수형 프로그래밍 강의를 수강하신 분들이라면 익…

2022.07.18
legacy
refactoring
인프콘 티저 페이지 개발기 (like 해커톤)

인프런의 컨퍼런스 ‘INFCON 2022’가 8월 26일 코엑스 그랜드볼룸에서 열립니다! 🎊 티져페이지 확인하러 가기 → 안녕하세요. 프론트엔드 개발파트 리온, 록입니다. 🙂 올해 8월, 인프랩의 첫 컨퍼런스를 개최하게되었는데요. 이를 위해서 발표연사자 모집 및 개최 소식을을 알리기 위한 티져 페이지를 개발한 경험들에 대해서 공유하려고 합니다. 기술스택 홍보가 중점이 되는 사이트이다 보니, SEO에 유리한 기술 스택이 필요했습니다. 일반적으로 리액트로 만들어진 SPA 사이트의 경우 렌더링이 CSR로 이루어지기 때문에 SEO에 불리합니다. 리액트로 SEO에 유리한 사이트를 만드는 방법은 여러 가지가 있지만 저희는 그중 서버 사이드 렌더링을 도와주는 next.js를 선택하게 되었습니다. next.js는 이미 랠릿 B2C 사이트를 개발하며 사용한 경험이 있었고, Gatsby처럼 정적 페이지를 생성하는 데 도움을 주는 static HTML export 기능을 제공하고 있기 때문이었습니다.…

2022.06.07
INFCON2022
Alpine/Debian 기반 Docker 이미지 간 cp 명령 동작 차이

안녕하세요. 인프랩 DevOps Engineer 선비입니다! 오늘은 Docker를 다루며 발견하게 된 Alpine 기반 이미지의 cp 명령과 Debian 또는 Ubuntu 기반 이미지의 cp 명령의 동작 차이점을 소개해드리겠습니다. Docker Image Docker에서는 Image를 이용하여 Container를 생성할 수 있습니다. Docker Image는 Layer로 이루어져 있으며 Base Image에 명령을 수행하거나 외부에서 파일을 복사하는 등의 과정을 통해 Layer를 추가함으로써 새로운 Image를 빌드할 수 있습니다. 빌드에 사용된 Dockerfile을 열어보거나, node:gallium-alpine 처럼 제작자가 붙인 Tag를 참고하거나, 직접 실행하여 설치된 패키지 관리자가 무엇인지 등의 특성을 살펴보면 빌드된 이미지의 Base Image로 어떤 이미지가 사용되었는지 유추할 수 있습니다. 매우 적은 용량의 이점을 갖는 Alpine 이미지와 범용적인 Debian 및…

2022.05.24
Docker
Alpine
Debian
AWS CDK에서 Terraform으로

안녕하세요. 인프랩 DevOps Engineer 선비입니다! 인프랩에 합류한 후 매일 다양하고 즐거운 경험을 하고 있습니다. 오늘은 그 중에서도 코드형 인프라(Infrastructure as Code, IaC)와 관련된 이야기를 해보려고 합니다. 작년 11월까지만 해도 IaC 도구로 AWS CDK를 사용하고 있었는데요, 그 당시 저를 힘들게 했던 고민들과 지금은 어째서 Terraform을 사용하게 되었는지 소개해드리겠습니다. 코드형 인프라 저희는 사용자에게 좋은 품질의 서비스를 안정적으로 제공하기 위해서 인프라를 구성합니다. 빠른 변화에 대응하기 쉽도록 클라우드 환경에서 인프라를 구성하고 있습니다. 많은 클라우드 서비스 공급자는 고객이 인프라 구성을 빠르고 간편하게 할 수 있도록 웹 콘솔을 지원하고 있는데요, 아마도 소규모 조직이나 클라우드 서비스를 이제 갓 도입한 조직의 경우 대부분의 인프라를 웹 콘솔을 통해서 구성했을 것입니다. 하지만 어느 정도 조직과 서비스의 규모가 커지면,…

2022.02.28
AWS
CDK
Terraform
Localstack 을 활용한 AWS 인프라 통합테스트

안녕하세요. 인프랩에서 백엔드 개발을 담당하고 있는 인트라고합니다. 저는 최근 오픈한 채용 서비스 랠릿 프로젝트에 참여하였습니다. 기존 인프런 서비스와는 다른 스택과 환경에서 개발되었고 그 과정에서 여러 시행착오와 고민을 하게 되었습니다. 이번 포스팅에서는 그중에서 AWS 서비스를 사용하는 로직의 통합테스트를 위해 을 도입했던 과정을 공유하고자 합니다. 통합테스트 우리는 잘 작동하고 깔끔한 코드를 위해 테스트를 작성합니다. 테스트는 의존성 여부에 따라 크게 3가지 종류가 있습니다. e2e integration unit 이번 포스팅에서 이야기하고자 하는 주제는 통합(integration) 테스트로 그중에서도 AWS 리소스와 연동해야 하는 테스트를 다룹니다. 이번에 신규 프로젝트를 진행하면서 와 서비스가 필요하게 되었고 관련 모듈을 만들게 되었습니다. 만든 모듈에 대해 유닛테스트를 작성하였지만 AWS 를 사용하는 로직을 유닛 테스트만 가지고 검증하기에는 부족하다는 생각이 들었습니…

2022.02.03
AWS
Localstack
Test
2022년 1월 100% 할인 이벤트 장애 부검

안녕하세요 인프랩의 향로입니다. 인프런 서비스는 2022년 1월 3일 ~ 17일까지 지속적으로 서비스를 사용할 수 없는, 역대급 장애가 발생했습니다. 이번 장애 기간동안 정말 많은 분들의 질책을 들으면서 반성을 했습니다. 특히 퇴근 후 1~2시간 공부밖에 못하시는 분들께서는 그날의 학습을 모두 포기하게 되는 경험을 드리게 되어서 더욱 복잡한 마음이 들었습니다. 이번 포스팅을 통해 왜 이렇게 오랜 기간 서버 장애가 발생했는지, 근본 원인이 해결 된 것은 맞는지 등의 의문을 해소하려고 합니다. 이런 장애 부검은 앞으로도 지속적으로 유지하면서 인프런 서비스가 개선되고 있음을 투명하게 공유드리도록 하겠습니다. 다시 한번 서비스 사용에 불편을 드려 정말 죄송합니다. 1. 발단 2022년을 맞이해서 인프런에서는 특정 강의를 100% 할인 이벤트를 진행했습니다. 다양한 분야의 강의 125개, 총 5,016,000원 강의를 모두 0원에 아래 기간동안 등록할 수 있는 이벤트였습니다. 첫번째 이벤트…

2022.02.01
Postmortem
Service
©INFLAB. ALL RIGHTS RESERVED