Search

BizOps 풀스택 개발자 (NodeJS & React & AWS)

안녕하세요.
인프런랠릿 서비스를 운영하고 있는 인프랩의 CTO 향로입니다.
2022년 11월 30일, ChatGPT가 발표되고 나서 벌써 8개월이 지났습니다. (현재: 2023년 8월)
이를 기반으로 여러 도구들이 등장하였는데요.
저 역시 업무에 이런 도구들을 하나둘씩 사용하기 시작했습니다.
OpenAI chat, DeepL 을 활용한 프로그래밍
이들을 활용하면서 개개인의 생산성에 큰 성장을 경험할 수 있었습니다.
그러다보니 개개인의 생산성을 넘어 조직의 생산성에도 퀀텀점프를 이룰 수 있지 않을까 하는 생각이 들었습니다.
예전처럼 막대한 적자를 내면서 인력을 보충해서 멋진일을 하기 보다는,
여전히 서비스의 폭발적인 성장을 지향하지만 조직이 감당 가능한 인원으로 폭발적인 성장을 하는 형태로 변했다고 생각합니다.
그리고 이런 방향의 성장을 위해서는 일 하는 방식의 변화가 필요합니다.
하나의 일 단위를 100이라고 한다면,
인원을 늘리는 것은 +100이 되겠지만,
자동화된 시스템을 도입하는 것은 x100이 된다고 생각합니다.
10배, 100배 더 성과를 내는 조직이 되기 위해 저희 인프랩 팀이 일하는 방식을 바꿔주실 풀스택 엔지니어분을 채용합니다.

주요 업무

[마케팅 자동화] 인프런과 랠릿의 수십만개의 콘텐츠를 보다 효과적으로 고객들에게 전달하는 방법을 찾아, 여러 마케팅 도구들과의 통합, 자동화를 진행합니다.
[데이터 고도화] 서비스 유저들의 데이터를 정확하게 쌓고 분류 하는 작업을 자동화합니다.
[팀 운영 자동화] 언제나 바쁜 인프랩 팀원들을 위한 자동화 작업을 하고, 편의 기능을 만들어 팀 전체의 생산성을 높입니다.

직군 소개

현재 인프랩에는 PM, 디자이너, 프론트엔드, 백엔드가 모여있는 목적 조직 (Cell, 스쿼드) 이 5개 존재하며, 이번 비즈옵스 풀스택 엔지니어 역시 PM과 함께 목적 조직으로 존재합니다.
파트 (챕터)는 백엔드 소속이 될 것이며, 다른 백엔드 개발자들과 달리 React/TS 기반의 프론트엔드 개발도 함께 진행합니다.
비즈옵스 풀스택 엔지니어는 다음과 같은 개발을 담당합니다.
NodeJS 기반으로 백엔드 비지니스 로직을 개발하고 배포합니다.
React 기반의 프론트엔드 UI 와 비즈니스 로직을 개발하고 배포합니다.
데이터 성격에 맞게 PostgreSQL과 Redis, MongoDB Atlas에 데이터를 적재하고 이용하는 코드를 작성합니다.
여러 개발자들이 협업하기 좋은 코드로 지속적으로 리팩토링합니다.
테스트 코드 기반의 개발을 진행하며, 강한 타입, 정적 분석등 같이 협업하는 분들의 심리적 안정감을 주기 위해 노력합니다.
데이터베이스의 실행계획 (Explain) 을 통한 인덱스 설계/수정과 슬로우 쿼리에 대한 튜닝 등을 진행합니다.
모니터링 서비스인 Datadog을 적극적으로 사용하여 시스템에서 발생하는 모든 이슈 사항에 대해서 추적하고 해결합니다.
온라인 PR, 오프라인 페어프로그래밍 등 코드 리뷰를 통해 성장하는 문화를 지향하고 있습니다.
이외에 인프랩 개발자들은 어떤 고민들을 하고 있고, 어떤 문제들을 해결하기 위해 노력하고 있는지는 아래 기술 블로그를 통해 확인할 수 있습니다.

기술 스택

이번 비즈옵스 풀스택 엔지니어의 기술 스택은 기존의 인프런의 레거시 시스템을 전혀 사용하지 않습니다.
완전히 새롭게 시스템을 구축할 예정이며, 다음과 같이 풀스택 JS/TS 환경에서 진행됩니다.
NodeJS / TypeScript
Nest.js / TypeORM
React & Next.js / React Query / React Hook Form
Jest / Cypress / SuperTest / LocalStack / msw
js-joda / dayjs / ts-jenum
Docker & Docker Compose를 통한 개인 개발 환경
OOP / 도메인 기반의 애플리케이션 설계와 구조
FP를 버리는 것이 아니라, FP가 필요한 영역과 OOP가 필요한 영역을 조화롭게 사용합니다.
인프라는 다음과 같이 사용합니다.
DataDog / Sentry
AWS Aurora PostgreSQL, Elastic Cache Redis, MongoDB Atlas
AWS ECS EC2
GitHub
Jenkins / Github Action 를 통한 배포 환경
Mantine 기반의 사내 디자인 시스템
Webstorm / VSCode / DataGrip
JetBrains사의 전제품을 지원하고 있어 개인이 원하는 제품을 사용하도록 권장하고 있습니다.
이 외 필요한 기술이나 도구가 있다면 언제나 적극적으로 파트에 제안할 수 있습니다.

자격요건

어려운 문제를 만나더라도, 어떻게든 해결책을 찾기 위해 노력하고 실제로 해결까지 해본 경험이 있으시다면 언제나 환영합니다.
당연하게도 JavaScript/TypeScript 생태계에 대한 기본적인 이해도가 필요합니다.
Node.js 기반의 백엔드 개발 경험이 있으신 분
React (Next.js) 기반의 프론트엔드 라이브러리 또는 프레임워크 개발 경험이 있으신 분
HTML, CSS 등 마크업에 대한 충분한 이해도가 있으신 분
GA, GTM 등 서비스 분석, 마케팅 툴에 대한 경험이 있는 분
MySQL / PostgreSQL 과 같은 관계형 데이터베이스를 사용하고 기본적인 테이블 설계를 해보신 분
기본적인 SQL 문법, JOIN, Subquery 등을 활용할 줄 아시는 분
Linux의 기본적인 명령어들을 사용할 수 있고, EC2에 기본적인 패키지들을 설치하고 Node 애플리케이션을 실행할 수 있으신 분
Function, Class, Instance, Object Literal 에 대해 기본적인 내용을 알고 있고, 상황에 따라 적절하게 사용하고 계신 분
HTTP 통신에 대한 기본적인 이해, RESTful API에 대한 설계나 개발 경험이 있으신 분
Git과 Github에 대한 기본적인 사용법을 알고 있고, 기본적인 Git의 브랜치 전략들을 사용하는데 무리가 없으신 분

우대조건

우대 조건은 아래 조건을 모두 할 수 있는 분을 의미하진 않습니다.
이 중 일부라도 해당하는 분이시면 즐거운 마음으로 관련 대화를 나눠볼 수 있을것 같습니다.
아래 관점으로 개발파트가 지향하고 있다고 봐주시면 좋을것 같습니다.
(공통) TypeScript, Java, Kotlin 등 강타입 (Strongly Typed) 언어를 이해하고 있으신 분
(백엔드) NestJS, Spring MVC와 같은 MVC Framework를 사용해본 경험이 있으신 분
(백엔드) TypeORM, Prisma, MikroORM 등 Type이 있는 ORM 을 사용해본 경험이 있으신 분
(백엔드) MySQL 혹은 PostgreSQL 과 같은 RDBMS 의 실행계획을 통해 인덱스 튜닝 / 쿼리 튜닝등을 진행해본 경험이 있으신 분
DBA분들이 해주시는 경우도 많기 때문에 DBA분들이 해주셨던 작업들에 대해 충분히 이해를 하고 계셔도 좋습니다.
(백엔드) 상황에 맞게 RDBMS의 테이블을 정규화 혹은 비정규화 설계를 적절하게 구분해서 적용해보신 분
(프론트엔드) Webpack이나 Rollup 같은 번들러를 직접 구성하거나 사용하면서 생긴 문제를 해결해본 경험이 있으신 분
(프론트엔드) SSR과 CSR에 대한 기본적인 이해가 있으며, 이를 Next.js 환경에서 적절하게 선택 구현해본 경험이 있으신 분
(프론트엔드) Mixpanel 등 마케팅 분석 도구를 서비스에 적용해본 경험이 있으신 분
(공통) 레이어드 아키텍처 (Layered Architecture), MVVM 아키텍처 등 확장성 있는 프로젝트 구조를 위해 학습하고 적용해본 경험이 있으신 분
(공통) DI (Dependency Injection) 패턴을 사용하고 있고, 왜 필요한지 알고 계신 분
(공통) Jest, Mocha 등 테스트 프레임워크를 통해 테스트 코드를 작성해오신 분
(공통) OOP에 대한 기본적인 이해도가 있으신 분
객체의 역할 / 책임 / 협력
객체간의 메세지 등에 대해 이해하고 계신 분
(공통) FP에 대한 기본적인 이해가 있으시거나 아래 강좌 혹은 책을 보신 분
(공통) 모니터링/로그/알람을 통해 장애를 탐지하고 해결해본 경험이 있으신 분
동일 장애 재발 방지를 위해 시스템/프로세스 개선을 해보신 분
(공통) 인프라 엔지니어가 없으면, 본인이 직접 AWS 인프라 구성을 해서라도 문제를 해결해야 속이 시원하신 분
(공통) 반복적으로 진행하는 수동적인 작업에 불편을 느껴 자동화를 진행해본 경험이 있으신 분
(주니어분들이라면) 위 언급되어있는 개념들을 몰라도 빠르게 내 것으로 만들수 있는 나만의 학습법을 가지고 계신 분
(경력무관) 기술 스택의 전환, 시스템의 전환 등 기술 변화를 좋아하고 받아들이는데 부담이 없으신 분
(경력무관) 운영/기획파트 등 프로그래머가 아닌 분들께 문제상황을 설명할 때 그들의 입장에서/그들의 언어로 이야기하는게 당연하신 분
(경력무관) 대화보다 하나의 문서를 작성하고 공유하길 좋아하시는 분

업무 방식

스타트업 특유의 빠른 제품 릴리즈서비스 안정성 이라는 2마리 토끼를 최소한의 인원으로 잡기 위해 적절히 업무 균형을 유지하고 있습니다.
Confluence / Jira를 도입하여 문서화를 적극적으로 진행하고 있습니다.
설치형을 사용하지 않고, Cloud 버전을 사용해 관리 리소스를 최소화 하고 있습니다.
특정 개인에게 의존하는 위험도를 낮추고, 신규 입사자분들의 심리적 안정감을 위해 개발파트 전체가 문서화에 적극 참여하고 있습니다.
장애 내역과 그에 대한 해결 사례를 남겨 전체 구성원의 역량을 끌어올리려고 노력하고 있습니다.
1주 혹은 2주 단위의 스프린트로 업무 공유와 회고를 주기적으로 진행합니다.
스프린트 방식 자체에 대해서도 주기적으로 회고를 진행합니다.
어떤 방식이 가장 효율적이고 성과를 낼 수 있을지 정기적으로 고민하고 논의합니다.
JIRA로 각자 티켓을 생성해서 업무를 진행합니다.
Git Flow를 변형한 저희만의 Git Flow에 맞춰 Branch 를 생성하고 Rebase / Merge 등을 진행합니다.
작업된 코드는 PR (Pull Request) 을 요청하고 코드리뷰를 진행하여 반영하고 있습니다.
모든 PR (Pull Request) 은 정적 분석 도구인 소나큐브(SonarQube) 와 연동하여 코드 퀄리티를 보장합니다.
신규로 진행되는 프로젝트들은 모두 테스트 코드 작성을 필수로 하고, 최소 커버리지 기준을 두어 테스트 코드역시 관리 대상으로 보고 개선합니다.
개발된 코드는 테스트서버에 배포를 하여 QA를 진행합니다.
모든 배포는 CircleCI를 통해 dev / master 브랜치 push 시에 자동으로 ECS로 배포가 진행됩니다.
PostgreSQL에서 발생하는 Slow Query에 대해 슬랙 알람을 걸어두고, 매번 쿼리 튜닝과 사내 가이드 문서를 작성합니다.
Slow Query Alarm
쿼리 튜닝 개선 사례 위키
AWS Cloud Watch와 DataDog APM을 통해 서비스 장애 알람을 수신 받고, 대응합니다.
상반기/하반기마다 워크샵을 진행합니다.
진행했던 과제에 대한 소개와 아쉬운점/개선점등을 이야기합니다.
다음 반기에 진행할 과제들을 정리합니다.
이를 통해 제품 릴리즈에 몰두하느라 방향성을 잃는 일이 없도록 중심을 잡고 있습니다.

풀스택 엔지니어로서 얻을 수 있는 것들

채용공고를 작성하면서 가장 많은 고민을 했던 부분인데요.
이 글을 보시는 분들이 수많은 시리즈 A이상의 스타트업들과 대기업들 사이에서 인프랩에 비즈옵스 풀스택 엔지니어로서 합류해야할 이유는 무엇일까 곰곰히 생각해보았습니다.
동료들이 외부에 자랑할 정도의 제품을 만들고 있다는 순간을 마주할 수 있습니다.
동료들의 생산성을 폭발적으로 늘릴 제품을 만들면서, 동료들의 감동적인 피드백을 경험할 수 있습니다.
외부에 이렇게 일하기 좋은 환경이라며 제품을 자랑하러 다니는 팀원들을 마주할 수 있습니다.
인프런과 랠릿의 수십만 컨텐츠 데이터들을 다뤄볼 수 있습니다.
교육, 채용 그리고 이후에 추가될 다양한 서비스들이 다루는 수십만 ~ 수백만의 컨텐츠 데이터들을 다뤄볼 수 있습니다.
이 컨텐츠들을 어떻게 하면 고객에게 효율적으로 전달할 것인지를 주로 고민하고 제품으로 녹여내는 경험을 얻을 수 있습니다.
SaaS 개발 경험을 쌓을 수 있습니다.
GA, Mixpanel 등의 마케팅 도구들뿐만 아니라 다양한 SaaS와 인프런 & 랠릿의 데이터를 연결하는 작업을 합니다.
이를 활용해서 사내에 필요한 여러 다양한 도구들도 함께 개발하게 되어 SaaS 서비스를 만드는 경험을 쌓을 수 있습니다.
백엔드 & 프론트엔드 & 데브옵스 전체의 역량을 다같이 향상시킬 수 있습니다.
초기 창업팀처럼 소규모의 Full Cycle 팀으로 작업을 하게 됩니다.
기존 인프랩 개발팀이 쌓아놓은 노하우를 빠르게 습득하면서 제품을 만드는 경험을 얻을 수 있습니다.
확정적으로 서비스의 성장을 경험해볼 수 있습니다.
현재 인프랩은 매년 2~300%의 서비스 성장을 하고 있습니다.
개발자의 기술적 역량을 쌓기 가장 좋은 환경은 폭발적으로 성장하는 서비스라고 생각하는데요.
매년 KPI를 초과달성하는 과정에서 조직의 문화, 사용하는 도구, 일하는 방식 등 다양한 곳에서 변화와 개선이 진행되고 이 과정에서 얻는 수많은 경험들을 얻을 수 있습니다.
기술 스택과 패러다임 변경이 예정되어있어 전체 구성원이 함께 공부하는 문화가 있습니다.
매주 수요일마다 테크 리뷰시간을 가져 기술적인 내용을 공유하고, 학습하는 문화가 있습니다.
팀 전체가 학습하고 성장하는 문화가 시작되고 있어, 같이 시작해볼 수 있습니다.

마무리

인프랩은 단순히 교육/채용 서비스가 아닌 더 큰 꿈을 꾸고 있습니다.
그리고 이를 위해서는 구성원 하나하나의 역량과 생산성을 폭발적으로 개선하고 싶은 욕심이 가득합니다.
비즈옵스 풀스택 엔지니어는 사내의 구성원들을 위한 제품을 많이 만들게 됩니다.
이렇게 만들어진 제품들이 종국엔 동료들이 외부에 나가서 자랑할 정도의 제품을 만들고 있다는 순간을 계속 경험하게 만들 것이라고 생각합니다.
헌터 x 헌터를 보면 다음과 같은 대사가 나옵니다.
내내 원했던 건 왕묘의 진실을 확인한 것이 아니라, 함께 안에 들어갔던 녀석들과 얼굴을 마주하고 악수를 한 순간이었어.
인프랩의 많은 동료들이 비즈옵스 엔지니어분들이 만든 제품을 떠올리는 순간을 기대합니다.
긴 글 끝까지 읽어주셔서 감사합니다.
면접장에서 뵙겠습니다.
여기까지 백엔드 개발 파트가 마음에 드셨다면, 아래 지원하기 버튼을 통해 지원해주세요
참고사항
수습 기간은 3개월이며, 수습 기간 중 급여는 감액하지 않습니다.
근무 시작일은 조정 가능합니다.
재지원은 결과 통보일 기준 6개월 이후부터 지원 가능합니다.
채용 관련 문의: hiring@inflab.com