미리보기
- 직업
- 백엔드 개발자
- 이름
- 노영은
- 간단소개
- 생산성과 효율성을 중요하게 생각하는 백엔드 엔지니어 노영은입니다. Node.js, Ruby, Java 등의 기술을 사용하여 여러 서비스를 개발한 경험이 있습니다. 현재는 상담 메신저 서비스인 채널톡의 백엔드를 구축하고 있습니다. 조직 전체의 생산성 향상을 중요하게 생각하기 때문에 업무 프로세스를 최적화하고 반복적인 작업을 줄여 왔습니다. 또한 테스트 코드 작성과 리팩토링을 통해 유지보수성을 개선하여 지속가능한 생산성을 만드는 것을 좋아합니다. 고객에게 좋은 경험을 빠르고 안정적으로 제공하는 것을 최우선으로 생각합니다. 이를 위해 항상 최적의 기술을 선택하려 노력하고 있습니다.
포트폴리오
기술 스택
- 기술 스택
- Java
- Ruby on Rails
- TypeScript
- Node.js
- PostgreSQL
- dynamodb
- AWS
경력
- 회사명
- 채널코퍼레이션
- 직책 • 부서
- 백엔드 API셀
- 근무 기간 (근무 형태)
- 2023.07. - 재직 중
- (1년 3개월 | 정규직)
- 담당 업무
올인원 상담 메신저 채널톡의 백엔드를 개발 및 운영했습니다. 조직 전체의 생산성을 위해 기술부채를 찾아 개선했으며, 팀 내의 기술부채를 점검하고 개선할 수 있는 주간 회의를 제안 후 도입하기도 했습니다.
Java, Dropwizard, PostgreSQL, DynamoDB 등의 기술을 사용했습니다.
- 회사명
- 그렙
- 직책 • 부서
- 평가사업부
- 근무 기간 (근무 형태)
- 2020.06. - 2023.07.
- (3년 2개월 | 정규직)
- 담당 업무
개발자 평가/교육/채용 플랫폼 프로그래머스와 온라인 시험 플랫폼 모니토를 개발했습니다. 백엔드, 프론트, 클라우드 등 서비스의 전반적인 부분을 개발 및 운영했으며, 스파이크성 트래픽으로 인한 여러 장애에 대한 대응 경험이 있습니다. 또한 회사가 20명 규모에서 180명 규모로 성장하는 과정에서 다양한 팀의 형태를 경험했습니다.
Ruby on Rails, PostgreSQL, AWS, Node.js, Vue.js 등의 기술을 사용했습니다.
- 회사명
- 당근마켓
- 직책 • 부서
- 플랫폼개발팀
- 근무 기간 (근무 형태)
- 2019.12. - 2020.01.
- (2개월 | 인턴)
- 담당 업무
지역생활/중고거래 서비스인 당근마켓의 안심번호 기능을 마이크로서비스로 분리했습니다. 프로젝트 세팅 및 개발을 전담했습니다.
Node.js, TypeScript, gRPC 등의 기술을 사용했습니다.
프로젝트
- 프로젝트명
- 채널톡 워크플로우 기능 개발
- 소속/기관명
- 채널코퍼레이션
- 프로젝트 기간
- 2024.01. - 2024.07.
- (7개월)
- 프로젝트 설명
워크플로우가 사용하는 다른 요소가 삭제되는 것을 막기 위한 entity 간 dependency 관리 작업
하나의 워크플로우가 다른 워크플로우를 호출할 수 있는 모듈형 워크플로우 추가
워크플로우가 무한히 순환하는 것을 막기 위한 사이클 감지 추가
AWS SQS를 사용하여 특정 대기시간 후 워크플로우가 동작하는 기능 구현
여러 워크플로우가 동시에 수정되는 경우에 일관성을 보장하기 위해 PostgreSQL의 Advisory Lock을 사용하여 채널 당 동시에 하나의 워크플로우만 수정할 수 있도록 제한
개요
반복적인 작업을 자동화하는 노코드 기능인 '워크플로우'를 개발했습니다. 워크플로우는 '상담이 시작되었을 때', '메시지를 보냈을 때'와 같은 이벤트가 발생하였을 때 사용자가 미리 작성한 플로우를 순차적으로 실행시키는 기능입니다.
상세 내용
- 프로젝트명
- 채널톡 요금제 개편
- 소속/기관명
- 채널코퍼레이션
- 프로젝트 기간
- 2023.10. - 2023.12.
- (3개월)
- 프로젝트 설명
요금제에 따라 채팅을 다룰 수 있는 매니저의 수를 제한하기 위해 상담사 권한 추가
요금제 개편 이후 발생하는 버그 수정
PostgreSQL deadlock 이슈 수정
사내 메모리 데이터베이스와 원본 데이터베이스 간 데이터 불일치 이슈 수정
개요
채널톡 요금제 개편 프로젝트에 참여했습니다.
상세 내용
참고 자료
- 프로젝트명
- 프로그래머스/모니토 서버의 안정성 개선
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2023.02. - 2023.03.
- (2개월)
- 프로젝트 설명
과도한 DB 연결로 인한 장애를 막기 위해 AWS RDS Proxy를 도입하여 최대 연결 제한
다음 날 예상되는 최대 동시 응시자 수를 계산하여 오토스케일링 설정
Amazon RDS 인스턴스 크기 조정 및 웹서버 개수 설정
시험 당일에 예상 서버 개수와 실제 서버 개수가 다를 경우 slack으로 알림 전송
새로운 기능 개발 후 성능에 미치는 영향을 쉽게 확인하기 위해 Github Actions로 부하테스트 자동화 시스템 개발
Terraform으로 인프라 설정, seed 데이터 설정, k6로 부하테스트 진행, 결과 리포트의 과정을 자동화
부하테스트 결과를 가지고 성능 향상 작업 제안
시험 종료 후 통계 작업 비동기화하여 CPU usage를 60%에서 40%로 감소
시험 시작 후 1분 동안 시험 문제를 Redis에 캐싱
개요
트래픽으로 인한 장애가 자주 발생하는 상황을 해결하기 위해 서비스의 안정성을 개선하는 TF에 참여했습니다. 이전 장애 이력을 분석하여 재발 방지를 위한 업무를 진행했으며, 프로젝트 종료 후에는 트래픽으로 인한 장애가 발생하지 않았습니다.
상세 내용
관련 자료
- 프로젝트명
- 프로그래머스/모니토 서버의 WebSocket 연결, 메시지 전송 지표 수집
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2022.11. - 2022.11.
- (1개월)
- 프로젝트 설명
장애 후속 조치로, WebSocket 관련 지표 수집 및 이상상황 발생 시 slack으로 alarm 전송
비용을 줄이기 위해 각 서버에서 파일에 지표 수집 후 1분 마다 CloudWatch metric에 전송하는 방식을 사용
개요
일부 웹서버의 CPU 상승으로 인한 장애가 발생하여, 과도한 WebSocket 메시지 전송이 원인이라는 것을 파악한 후 재발 방지 작업을 진행했습니다. 각 서버 별 WebSocket 연결 개수와 메시지 전송 지표를 수집하고 알람을 설정했습니다.
상세 내용
관련 자료
- 프로젝트명
- 프로그래머스 코드실행기 서버 개선
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2022.09. - 2022.10.
- (2개월)
- 프로젝트 설명
- JavaScript로 작성되어 있는 코드에 타이핑 적용
- TypeScript에 익숙하지 않은 구성원을 고려하여 JSDoc으로 타이핑 적용
- 코드실행기 서버 릴리즈가 오래 걸리는 이슈를 버저닝을 도입하여 호환성 유지하는 방식으로 해결
- 응시자가 제출한 코드에서 테스트코드를 확인할 수 있는 보안 이슈 수정
- 응시자코드를 실행하기 전에 테스트코드 파일을 삭제하는 코드를 먼저 실행하도록 수정
개요
오랫동안 관리되고 있지 않은 코드실행기 서버를 개선하는 프로젝트를 담당했습니다.
상세 내용
관련 자료
- 프로젝트명
- 프로그래머스/모니토 시험 유의사항 기능 개발
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2022.06. - 2022.08.
- (3개월)
- 프로젝트 설명
- 기능 개발 전 기존 문제 생성 페이지 리팩토링
- 시험 문제를 등록하는 코드의 위치를 controller에서 model로 이동
- 전역적인 유의사항을 관리자 페이지에서 동적으로 수정할 수 있도록 설계
- 응시자의 언어에 알맞은 유의사항이 보이도록 i18n 적용
개요
온라인 시험에서 응시자와 감독관 간에 유의사항에 대한 커뮤니케이션이 어려운 문제를 해결하기 위해 유의사항 기능을 기획하고 개발했습니다. 특정 시험에서만 적용되는 유의사항을 설정할 수 있는 기능의 백엔드를 담당했습니다.
상세 내용
- 프로젝트명
- Ruby on Rails 로컬 개발환경 성능 개선
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2022.03. - 2022.03.
- (1개월)
- 프로젝트 설명
- 로컬 개발 환경이 느린 문제를 Flamegraph를 통한 프로파일링으로 원인 파악 후 해결
- 파일 변경 후 진행하던 routing table 검사를 제거하여 controller 코드 수정 후 API 요청에 소요되는 시간을 4초에서 2초로 개선
- Rails 환경을 별도의 프로세스에서 로딩하는 spring preloader를 테스트 환경에 도입하여 테스트코드 로딩 시간을 40초에서 20초로 개선
- 테스트코드 실행 시 진행하던 db 마이그레이션 검사를 제거하여 테스트코드 로딩 시간을 20초에서 3초로 개선
개요
Ruby on Rails 로컬 개발환경의 느린 성능을 개선했습니다.
상세 내용
- 프로젝트명
- 프로그래머스/모니토 시험 응시 페이지 개편
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2021.06. - 2021.12.
- (7개월)
- 프로젝트 설명
- 지속적으로 메인 브랜치에 머지하고 적은 시험부터 점진적으로 릴리즈하기 위해 Feature flag 도입
- 이후 Feature flag와 지속적 배포 문화를 전파하여 전사적으로 60개 이상의 Feature flag를 사용
개요
프로그래머스/모니토의 시험 응시 페이지를 전면 개편하는 프로젝트에서 백엔드와 프론트엔드를 모두 개발했습니다.
상세 내용
관련 자료
- 프로젝트명
- 프로그래머스 학습관리시스템(LMS) 개편
- 소속/기관명
- 그렙
- 프로젝트 기간
- 2021.01. - 2021.04.
- (4개월)
- 프로젝트 설명
- 기존 ssr 방식에서 HTTP API 방식으로 개편하며 API 문서화 도구 도입
- OpenAPI로 변환하는 기능에서 hash 배열 타입의 변환이 안되는 버그를 발견하여 멍키패치로 수정
- 다양한 조건의 count 쿼리들로 인한 성능 이슈 개선
- create, update, delete 시 count를 미리 계산하고 저장하는 모듈 작성
- 질문/답변 게시판에 Elasticsearch을 통해 검색 구현
- 기능 개발과 버그 수정 업무 사이의 컨텍스트 스위칭 비용을 줄이기 위해 git worktree 기능 사용
개요
프로그래머스의 레거시 LMS를 전면 개편하는 프로젝트에 참여하여 백엔드를 담당했습니다.
상세 내용
관련 자료
- 프로젝트명
- 안심번호 마이크로서비스 개발
- 소속/기관명
- 당근마켓
- 프로젝트 기간
- 2019.12. - 2020.01.
- (2개월)
- 프로젝트 설명
- TypeScript와 gRPC를 사용하여 기존 모노리스 서버와 안심번호 서버 간 API 작성
- 안심번호 통신사와 TCP Socket으로 통신 및 데이터 파싱
- TCP 연결에서 connection timeout을 사용하기 위한 함수 작성
- 안심번호 현황을 볼 수 있는 관리자 페이지 개발
개요
기존 모놀리틱 서버에서 안심번호 관련 기능을 마이크로서비스로 분리했습니다.
상세 내용
관련 자료
- 프로젝트명
- todorist
- 소속/기관명
- 개인
- 프로젝트 기간
- 2024.01. - 2024.05.
- (5개월)
- 프로젝트 설명
- openai의 function calling 기능을 사용하여 정확한 형식으로 내용을 요약
- 사용자가 지정한 일정에 따라 알림 센터와 이메일로 리마인드 전송
- 링크를 웹페이지에서 즉시 추가할 수 있는 chrome extension 개발
개요
링크 내용을 우선 요약한 후, 나중에 리마인드를 주는 서비스입니다.
Ruby on Rails, OpenAI, Fly.io, Vue.js 등의 기술을 사용했습니다.
상세 내용
관련 자료
- 프로젝트명
- autoinjection
- 소속/기관명
- 개인
- 프로젝트 기간
- 2022.11. - 2023.01.
- (3개월)
- 프로젝트 설명
- TypeScript 생성자에서 타입이 인터페이스인 매개변수가 있다면 해당 인터페이스를 구현한 클래스의 인스턴스를 자동으로 주입
- TypeScript Compiler API와 ttypescript를 사용하여 TypeScript 컴파일러를 변환
개요
TypeScript에서 의존성을 자동으로 주입하는 라이브러리입니다.
TypeScript, ttypescript 등의 기술을 사용했습니다.
상세 내용
관련 자료
대외활동
- 활동명
- 오픈소스 컨트리뷰톤 참가 (GlueSQL)
- 소속/기관
- 활동 연도
- 2021
- 활동 상세 설명
- LPAD, RPAD 함수, 날짜 CAST 등 기능 개발
개요
Rust로 작성된 SQL 데이터베이스인 GlueSQL를 개발했습니다.
상세 내용
관련 자료
자격증
- 자격증명
- ISTQB CTFL
- 점수/급 | 발급 기관
- 취득월
- 2019.07
- 자격증명
- 정보처리기능사
- 점수/급 | 발급 기관
- 취득월
- 2018.07
교육
- 소속/기관
- 고려사이버대학교
- 종류 | 전공명/전공계열
- 대학교(학사) | 미래학부 인공지능학과
- 재학 기간 (재학 상태)
- 2022.03. - 재학 중
- 소속/기관
- 대덕소프트웨어마이스터고등학교
- 종류 | 전공명/전공계열
- 고등학교 | 소프트웨어개발과
- 재학 기간 (재학 상태)
- 2017.03. - 2020.01. (졸업)