미리보기
기본 정보
사용자 중심의 제품을 개발하고 싶은 백엔드 개발자 김상웅입니다. 스타트업 환경에서 Node.js, AWS 기반 백엔드 서버를 구축하고 운영한 경험이 있습니다. 사용자에게 필요한 문제를 정의하고 해결하는 것이 즐겁습니다. 사용자의 목소리를 사내 모든 구성원들에게 전달하여 빠른 의사결정과 문제 해결이 가능한 프로세스를 구축한 경험이 있습니다. 조직 구성원과 함께 성장하여 서비스를 발전시키려고 합니다. 사내에서 새로운 기술 도입을 위한 스터디와 테크톡을 진행한 경험이 있습니다. 사용자가 겪는 문제를 다양한 기술로 해결하는데 기여하고 싶습니다.
기술 스택
TypeScript, NestJS, MongoDB, MySQL, AWS, Git
경력
주식회사 이분
백엔드 개발자 | 편하게 (개발팀) | 재직 중
2023.06. ~ 재직 중 (1년 6개월)
[이분 - UX라이팅 솔루션 쉽게]
NestJS
TypeScript
MongoDB
AWS (EC2, ELB, S3, CloudFront, Lambda, CloudWatch)
Git
Github Actions
AWS CodeDeploy
에디터 사용성 개선 프로젝트 - 메이저 버전 업데이트 (1)
문자열 데이터의 안정적인 흐름을 보장하면서 API의 스펙 정형화 필요성 느낌.
동시에 사용자의 다양한 피드백을 기반으로 서비스 확장이 요구됨.
→ TypeScript & Monorepo 기반 NestJS 프레임워크 셋업 & 전반적인 RESTful API 개발에디터의 기능이 글 작성과 복사한 글을 붙여넣는 것에 한정되어 있었음.
다양한 기능을 제공하면 사용자의 체류시간이 늘어날 것이라는 가설 설정 후 사용성 개선 작업 진행.
1) 검토 결과 문장을 HTML<p>
및<span>
태그로 변환하는 토큰화 API를 구현. 에디터 화면에서 쉽게가 추천하는 대체어가 있을 경우, 사용자가 입력한 원문에서 해당 부분을 하이라이팅하는 기존 비즈니스 로직 개선.
2) 언어 데이터팀과 논의하여 레벤슈타인 알고리즘을 활용해 사용자가 입력한 문장과 언어 규칙 데이터 셋에 존재하는 문장들의 유사도를 측정하여 더 좋은 표현을 추천해주는 시스템 개발
3) GPT 3.5-turbo ~ o1 모델의 프롬프트를 지속 개선하여 초안생성, 문체 다듬기 등 AI를 활용한 API 고도화.성과
5.0버전 출시 후 신규 고객 유치 및 서비스 운영 중 → 현재 6개 기업에서 서비스 이용
유사도 추천, 긍/부정문 변경, 맞춤법 (띄어쓰기, 마침표), 중복 문장 개선, 생성형 AI 기반 서비스 등 다양한 서비스 확장 및 운영 중
협업 기능 확장 - 메이저 버전 업데이트 (2)
기존 쉽게 4.0에서 문서나 작업 내역 공유, 사용자 관리 기능이 제한됨.
사용자 수만큼 비용을 지불해야 하는 고객사의 사용성 문제 해결 필요성 느낌.
→ 팀 워크스페이스 기반으로 사용자와 문서를 생성하고 관리할 수 있는 협업 기능 구현규모가 큰 고객사의 경우 워크스페이스에서 팀원 관리가 어렵다는 문제가 있었음
→ Microsoft Azure SAML2.0 SSO 인증을 도입하여 팀원을 직접 관리할 수 있도록 개발
→ NestJS의 PassportModule을 활용하여 saml 기반 인증이 가능하도록 API 설계
SSO 인증 시 유저가 입력한 이메일과 MS에 로그인 한 이메일 정보를 비교할 수 있는 Guard 구현하여 보안 강화성과
사용자가 회원가입을 하지 않아도 되기 때문에 사용성을 개선했다고 내부적으로 판단.
협업 기능 확장을 통해 B2B SaaS로 확장 가능성 확보
문의 채널 확장 - 메이저 버전 업데이트 (3)
기존 쉽게 4.0에서 오류 수정 문의, 언어 규칙 추가/수정/삭제 문의, 기타 문의가 하나의 플로팅 버튼으로 구성되어 있었고, 사용자가 모든 인터페이스 정보를 입력해야 하는 불편함이 있었음.
→ 문장 검토 결과 시스템 실행 후 쉽게에서 추천하는 표현 각각에 대해 문의할 수 있는 기능으로 개편
→ 언어 규칙을 추가/수정/삭제할 수 있는 버튼을 상단 navbar에서 항상 볼 수있게 수정하여 문장 검토 사용 여부와 관계 없이 다양한 언어 규칙을 커스텀 할 수 있도록 개편기존 Express.js 기반 시스템에서 사내 CS팀 메일로만 발송되던 기능이 있었고 미팅 간 소통 비용이 발생했음.
→ Nodemailer 기반 이메일 발송 로직 및 Slack webhook을 활용하여 NotifiactionModule 구현성과
사용자 피드백 기반 내부 의사결정 속도 향상에 기여
6개월 간 4개 고객사에 대해 약 300여개의 문장 규칙 및 오류 수정 요구사항을 접수하여 서비스 개선에 기여
AWS 기반 전반적인 인프라 환경 구축 및 개선
4.0 이전 버전의 AWS 리소스가 정리되지 않아 비용이 과도하게 발생하였음.
→ 입사 후 AWS 비용 대시보드와 실제 인프라를 비교하여 사용하지 않는 리소스를 모두 제거서비스 에디터 사용성 개선 프로젝트 진행 시 전반적인 인프라 구조 설계 및 구축.
→ AWS EC2, ELB, S3, CloudFront 등을 활용하여 서비스 호스팅 인프라 설계와 구축 담당.
→ 분리된 서브넷에 고객사의 별도 독립 서버 구축 시스템 설계 및 운영금융권 회사에서 쉽게 서비스 도입 시 진행한 CSP 안정성평가를 처음부터 끝까지 대응함.
→ AWS 리소스 보안 강화, 사내 보안 정책서 작성 등 체크리스트 기반 요구사항 조치성과
미사용 리소스를 제거하여 입사 후 전월 대비 70% 비용 절감 및 비용 최적화 운영 중
CICD 자동화 프로세스를 도입하여 주 1회 이상 배포하는 조직 문화 형성에 기여
별도 독립 서버 구축 시스템을 통해 추가 수익 창출에 기여 → 계약 간 독립 서버 구축 비 별도 부과
CSP 안정성평가 대응 및 조치를 통해 신규 고객사 유치 성공에 기여
AWS CloudWatch 기반 모니터링 시스템 구축
초기 EC2 인스턴스에 로그를 저장하고 메일로 발송하는 크론 API가 구현되어 있었음.
디스크 용량 문제, 직접 관리 비용, 보안 이슈 등의 부수적인 문제가 발생하였음.
→ CloudWatch로 애플리케이션 로그를 스트리밍하고, D-1일 로그를 S3 버킷에 저장하는 Lambda 함수와 EventBridge 구현단 기간에 사용자 수가 급증할 때 EC2 인스턴스 처리량이 저하되는 문제가 발생했음.
→EC2 인스턴스의 CPU 사용률이 60% 이상인 경우 Slack으로 알림을 보내는 Lambda 함수 구현
성과
SSH 접속 제한을 통해 증적 로그의 무결성을 보장하고 보안 문제를 최소화하는데 기여
로그를 직접 관리하는 부수적인 비용을 해소하는데 기여
애플리케이션 장애 발생에 대비하여 업무 연속성을 보장하는 시스템 구축
개발 환경 개선 - 지속 관리 중
기존 SSH 접속을 통해 애플리케이션을 수동으로 배포하여 관리가 어렵고 보안 문제가 발생 가능성이 높았음.
→ 보안 강화를 위해 EC2 인스턴스를 private subnet으로 마이그레이션
→ Github Actions, AWS CodeDeploy, S3를 활용하여 CICD 워크플로우 구축
→ build & test / staging 배포 / production 배포 / slack 결과 전송으로 구분했고 workflow_call을 사용하여 워크플로우의 재사용성을 높임입사 후 테스트 환경이 부족하다고 판단함.
1) 고객의 다양한 요구사항을 반영하고 테스트 할 수 있는 환경이 부족
→ 개발 환경과 통합된 staging 서버를 별도로 구축하여 테스트 및 QA 진행
2) Postman, 로컬 환경에서 통합 테스트를 진행하여 테스트 시간이 오래 걸리고 정확성이 낮은 문제가 발생
→ 주요 기능인 문장 검토 시스템의 다양한 언어 데이터 규칙을 테스트 하기 위해 테스트 문장을 통일함.
→ SuperTest 기반 E2E 테스트코드를 도입, 이후 메이저 버전 업데이트 시 Jest 기반 단위 테스트를 도입하여 현재 약 600개 이상의 테스트 코드를 관리하고 실행 중.Git Commit 메시지 컨벤션이 없어 작업 내역을 효율적으로 관리할 수 없었음
→ Git Rebase 및 feature > develop > release > main 전략 도입
→ .gitmessage.txt 파일을 각 레포지토리에 추가하여 커밋메시지 컨벤션 정립성과
배포 및
테스트 자동화 프로세스 구축으로 사용자의 니즈를 빠르게 반영할 수 있는 개발 환경 조성에 기여
테스트 코드 및 commit 메시지 컨벤션 정립을 통해 오류를 빠르게 수정하고 대처할 수 있는 업무 환경에 기여.
Express.js 기반 문장 검토 시스템 개편 - 쉽게 4.0 버전
일관되고 더 쉬운 표현을 추천하는 문장 검토 시스템의 레이턴시가 최대 10초 이상 소요됨.
→ 스키마를 수정하여 if 조건문을 filter 고차함수를 이용하도록 코드 개선
→불필요한 반복문을 제거하여 시간복잡도와 코드라인 약 50% (약 2000 → 1000) 감소
→ 한개의 함수에서 처리하던 비즈니스 로직을 5개의 함수로 리팩토링
→ 형태소를 비교하는 복잡한 쿼리 대신 애플리케이션 초기화 시 언어 규칙 데이터를 인메모리 캐싱하여 데이터 처리 시간 최적화성과
문장 검토 시스템 레이턴시 최대 400% 개선
매출액 3억원 달성에 기여 → 기사
주식회사그레이스풀레인(GracefulRainCo.,Ltd.)
백엔드 개발자 & 테크멘토 | 개발팀
2022.09. ~ 2023.05. (9개월)
[저스트코드 - 온라인 코딩 교육 플랫폼]
TypeScript
GraphQL
AWS Labmda (MSA)
MySQL
Jenkins
Git
Cypress를 활용한 E2E 테스트코드 도입
새로운 강의의 과제 챕터를 사내 구성원들이 테스트하는 데 많은 시간이 소요됨.
→ Jest의 test.each() 함수를 활용하여 과제에 필요한 모든 케이스를 작성했고, Jenkins와 연동하여 주기적인 테스트가 가능하도록 구축.테스트 코드 작성 중 reCAPCHA, Iframe 동영상 재생 등 테스트 제한 요소 직면.
→ 사람이 테스트 해야 하는 영역은 제외했고 UI 컴포넌트 렌더링 여부 혹은 클릭 가능 여부 등의 Assertion 구문을 통해 해결함.
코드를 입력하거나 정답을 선택할 수 있는 코드에디터 서비스 개발
에디터 화면에서 코드를 입력하거나 빈칸에 알맞는 정답을 선택할 수 있는 기능 개발.
→ 온라인 강의 챕터에 해당하는 과제, 과제와 빈칸, 빈칸과 정답 간의 관계 정의 및 스키마 개선.
→ MySQL의 JOIN과 JSON_OBJECT함수를 활용하여 과제 정보를 조회할 수 있도록 기존 DAO 로직 수정.
카카오 로그인 이후 휴대전화 인증 과정을 제거하여 이탈률 0% 전환
카카오 로그인을 시도하는 사용자가 많았으나 휴대전화 인증 단계에서 이탈하는 사용자가 발생함.
→ 기존 결제 기능 연동을 대비하여 휴대전화 인증 과정이 유지되던 것이 원인으로 작용함.
→ 토스페이먼츠 일반 결제를 도입했고, 그 과정에 본인인증 단계가 포함되어 로그인 단계에서 휴대전화 인증 과정을 제거함.
[wecode - 오프라인 코딩 부트캠프]
Node.js (JavaScript)
MySQL
`Git & GitHub
38기부터 46기까지 약 200명 교육생 대상 Node.js 백엔드 커리큘럼 멘토링
기수 별 2차례의 팀 프로젝트 코드 리뷰
백엔드 사전학습 커리큘럼 신규 자료를 제작
포트폴리오
교육
위코드 부트캠프
사설 교육 | 백엔드 과정 수료 (Python - Django)
2022.05. ~ 2022.08. | 졸업
아주대학교
대학교(학사) | 영어영문학과 (복: 국제통상학과)
2015.03. ~ 2019.02. | 졸업
자격증
AWS Certified Solutions Architect - Associate
Pass | Amazon
2024.01.
외국어
영어
비즈니스 회화 가능