(주)플래너리

풀스택 개발자 · 2020.07 ~ 2022.07


오프라인 중심 서비스 ‘헤이조이스’를 온라인 플랫폼으로 전환하는 초기 개발팀 멤버로, 기획부터 개발·운영까지 전 과정을 경험했습니다. 검색, 어드민, 자동화 등 핵심 기능을 개발하며 서비스 성장과 확장에 기여했습니다.

📁 프로젝트

배너 자동화

BE

특정 유저를 타겟팅한 배너 노출을 통한 매출 증가를 위해 웹사이트 메인 페이지의 상단/하단 배너를 관리하는 adminAPI/ clientAPI를 구현했습니다.

기술 스택
DjangoPythonReactJavaScript
Needs & ProblemsSolutions
콘텐츠 운영자가 자유롭게 배너를 관리하는 시스템이 필요함배너 DB를 생성하고 관리자/유저별 필요한 기능에 따른 REST API를 구현함
유저 그룹에 따라 다른 배너 노출이 필요함배너 노출 조건(기간, 대상 등) 설정을 포함한 배너 관리 시스템을 개발함

외부 서비스 등록 자동화

BE

관리자 편의와 유저의 서비스 경험 개선을 위해 외부 서비스 자동 등록 프로세스를 구현했습니다.

기술 스택
AWS-LambdaAWS-DynamoDBAWS-EventBridgeJavaScript
Needs & ProblemsSolutions
내부 상품을 구매한 유저를 외부 서비스에 자동으로 연결하고 싶음SaaS api를 호출하여 외부 서비스에 유저를 자동으로 등록하는 람다를 작성하고 AWS EventBridge로 구매 이벤트와 연결하여 "구매-외부 연결" 과정을 자동화 함, 시스템 자동화를 통해 유저 경험을 개선하고 서비스 운영자의 리소스를 줄임

검색 기능

FEBE

유저 경험을 개선하고 판매율을 증가시키기 위해 콘텐츠를 카테고리로 필터링하고 키워드로 검색하는 기능을 구현했습니다.

기술 스택
AWS-ElasticsearchAWS-DynamoDBGraphQLReactJavaScript
Needs & ProblemsSolutions
보유하고 있는 콘텐츠에 대한 필터링/검색 기능이 필요함AWS에서 제공하는 ElasticSearch 검색엔진을 사용함, 검색의 효율성을 위해 검색에 유용한 properties에만 선택적으로 analyzer를 적용하고 콘텐츠 데이터에 맞게 type을 설계하고 쿼리를 작성함

dynamoDB와 graphQL

BE

다양한 구조의 데이터를 저장할 수 있는 db를 설계하고, client의 요청(필요한 데이터만&원하는 구조로)에 따라 새로운 CRUD를 빠르고 쉽게 개발하기 위해 dynamoDB와 graphQL를 이용하여 서비스를 구축했습니다.

기술 스택
AWS-DynamoDBAWS-AppSyncGraphQLAWS-LambdaJavaScript
Needs & ProblemsSolutions
서비스에 필요한 다양한 구조의 데이터를 쉽게 추가할 수 있는 table(document)이 필요함공통 필드와 개별 필드를 정의하여 중복을 줄인 스키마를 설계하고, 클라이언트의 필요에 따라 다양한 구조의 데이터를 제공하도록 작은 단위로 쪼개어 resolver를 구현함

효율적인 협업을 위한 작업

BE

Github Action을 이용해서 특정 브랜치(깃플로우를 따른 브랜치들)를 실시간으로 감시하고, 변동이 생겼을 때 자동으로 배포(AWS에 push)하는 과정에 필요한 설정 코드들을 작성하고 보완했습니다.

기술 스택
Serverless FrameworkGit-FlowGitHub ActionsJestAWS
Needs & ProblemsSolutions
AWS 작업을 코드로 관리하고 싶음코드로 severless를 관리할 수 있도록 AWS 설정 스크립트를 작성함
테스트 코드를 통한 품질 확보jest 이용하여 단위 테스트 코드를 작성함, 테스트에 필요한 인증 정보를 유저 유형 별로 관리하고 응답 값 형태에 따른 적절한 expect를 사용하여 테스트 코드를 작성함

블로그

FE

사이트 내에서 다양한 컨텐츠를 제공하여 유저의 유입과 체류 시간을 늘리기 위해 블로그 페이지를 구현했습니다.

기술 스택
ReactJavaScriptGraphQL
Needs & ProblemsSolutions
외부 사이트에서 제공되었던 컨텐츠를 서비스 내부에서 제공하여 유저의 이탈을 막고 싶음블로그 형식의 글을 제공하는 페이지를 구현함, 외부 검색과 노출을 위해 sitemap에 추가하는 작업을 진행하여 SPA의 취약점인 SEO를 보완함

아이디/비밀번호 찾기 개선

FEBE

등록된 계정을 찾고, 비밀번호를 재설정하는 과정을 단계별로 쪼개 API를 구현하여 유저 편의를 높였습니다.

기술 스택
DjangoReactJavaScript
Needs & ProblemsSolutions
아이디/비밀번호 찾기 과정의 안전성과 사용성을 높여야 함꼭 필요한 과정을 기준으로 단계를 설계하고 이에 맞춰 api를 쪼개어 설계함, api호출 사이에 보안을 위한 과정을 추가함

쿠폰 시스템 리뉴얼

BE

쿠폰의 사용성을 높여 비즈니스에 적극 활용할 수 있도록 기존 쿠폰 시스템을 개선했습니다.

기술 스택
AWS-LambdaSequelizeJavaScriptAWS-DynamoDBGraphQL
Needs & ProblemsSolutions
불편했던 기존 시스템을 개선하여 사용성을 높이고 싶음각 필드의 목적을 뚜렷이 정의하고 필드간 독립성을 확보하여 사용성이 높아지도록 데이터 구조를 개선함
유저의 액션(쿠폰 코드 입력)으로 쿠폰을 지급하고 싶음관리자의 입력을 기반으로 단방향 암호화(해시 알고리즘)를 사용하여 쿠폰 코드를 생성하는 시스템을 개발함, 코드 관리와 사용을 위한 graphQL을 구현함

B2B 시스템 구현 (신규 서비스)

FEBE

기업 교육을 통해 새로운 수익 모델을 만들고 회원 수 증가를 위해 B2B 시스템을 개발했습니다.

기술 스택
ReactJavaScriptAWS-LambdaAWS-DynamoDBGraphQL
Needs & ProblemsSolutions
기업 유저를 가입시키고 b2b 전용 페이지를 제공하고 싶음보안 처리를 한 url과 기업 특정 코드를 이용한 기업 유저 확인 로직을 구현함
일반 유저와 기업 유저의 서비스 경험을 다르게 하고 싶음유저의 상태 값에 따라 보여지는 화면이 달라지도록 구현함

컬리 IR 사이트 구축

BE

플래너리가 컬리에 인수되는 과정에서 기업 IR 용도로 활용되는 사이트를 구축했습니다. Node.js 기반 API를 직접 개발하며 기업의 투자 유치와 서비스 전환에 기여했습니다.

기술 스택
Node.jsExpressSequelizePostgreSQL
Needs & ProblemsSolutions
IR 사이트 구축을 위해 안정적인 데이터 관리가 필요함Sequelize + PostgreSQL 기반으로 DB를 설계하고 안정적인 CRUD API를 개발함