채용공고 올리기

서건혁님을 응원해보세요!

이직/구직 중이에요

미리보기

직업
소프트웨어 엔지니어
이름
서건혁
이메일
dbsehzhd4527@gmail.com
간단소개
행복을 개발하는 개발자 서건혁입니다. 어릴 때 친구와 함께 게임을 하며 '행복하다'라는 감정을 많이 느꼈고, 그래서 게임 개발자를 꿈꿨습니다. 하지만 살아가면서 게임뿐만 아니라 다양한 순간에서 행복을 찾을 수 있다는 걸 깨달았습니다. 저는 더 넓은 세상에서, 더 많은 사람들의 행복을 만들고 싶었습니다. 그 과정에서 웹이라는 무대를 만났고, 이곳이야말로 사람들이 일상 속에서 행복을 경험할 수 있는 곳이라고 생각했습니다. 제가 가진 개발 역량을 통해 동료들에게, 그리고 제가 만든 서비스를 사용하는 사람들에게 작은 행복을 선물하고 싶습니다.

자기소개

자기소개

저는 문제가 생겼을 때, 그 원인이 무엇인지 정확하게 알고 조치하여 추후 같은 일이 방지하는 것을 중요하게 생각하고 있습니다. 그것이 일하는 사람들에게 행복을 가져다 줄것이라 생각하기 때문입니다.

그 때문에, 깊게 공부하며, 문제의 원인을 하나하나 분석하려는 성격을 보유하고 있습니다.

아래 두 개의 문서가 제가 최근 일하는 스타일을 잘 나타내고 있습니다.

mysqladmin 헬스체크 권한 축소

문서: https://goraedevelop.tistory.com/13

MySQL의 General Log에서 일정 간격마다 root 계정으로 접속하는 것이 실패하였다는 로그를 발견하였습니다. 무엇이 원인인지 분석해 본 결과 mysqladmin을 활용해서 헬스 체크를 하는 부분에서 root 계정을 접근을 시도하는 부분이 있었고 mysqladmin에서 root 게정에 관한 비밀번호가 없어 접속을 지속적으로 실패하는 바람에 해당 로그가 남겨지게 되었다는 것을 파악했습니다.

이는 root계정에 대한 비밀번호를 mysqladmin에게 주는 방법으로 해결할 수 있지만, 그렇게 되면 보안상 위협을 초래할 수 있다고 생각했습니다. 따라서 헬스 체크용 계정을 따로 만들어 이를 mysqladmin에서 사용하려는 계획을 세웠습니다. 하지만 헬스 체크용 계정에 MySQL에 대한 권한을 어디까지 줘야 할지 잘 파악이 되지 않았습니다.

그래서 MySQL-Server 소스코드를 분석하였습니다. 그리고 mysqladmin ping 명령어는 MySQL에서 제공하는 프로토콜인 COM_PING을 활용하여 mysql 프로세스가 잘 동작하고 있는지 확인한다는 사실을 알았습니다. 그리고 이러한 프로토콜을 통해 데이터를 주고받는 동안 계정에 대한 로그인 절차만 진행하고 추가로 특별한 권한이 필요하지 않다는 사실도 알게 되었습니다.

이후, 헬스 체크용 계정에서는 최소 권한인 USAGE를 부여하였고, 이를 사용함으로써 추후 헬스 체크용 계정이 탈취당해도 보안상 문제가 일어나지 않도록 함으로써 프로젝트의 보안성을 향상했습니다.

MySQL 로깅 분할 방식에 대한 고찰

문서: https://goraedevelop.tistory.com/18

MySQL에서 로깅을 어떻게 하면 처리할 수 있을지 고민하고 있었습니다. 공식 문서를 통해 FLUSH SQL Statement가 기존 로그 파일을 닫고 열고 닫는다는 사실을 알 수 있었고 이를 활용해 연속적으로 MySQL 로그를 수집할 수 있는 방법을 고안했습니다.

이때 문득 logrotate 방식도 이와 비슷한 방식으로 연속적인 로깅을 하고 있지 않을까 하는 생각이 들었습니다. 만약 사실이라면, 직접 구축하지 않고 logrotate를 사용해도 됐기에 strace를 활용하여 시스템 콜 분석을 통한 사실 검증에 들어갔습니다.

결론적으로 logrotate도 제가 고안한 방식과 비슷한 방법을 사용하고 있었고, 이를 통해 logrotate를 통한 로그 회전 방식을 채택하게 되었습니다.

기술 스택

기술 스택
JavaScript
Terraform
Kubernetes
Docker
github-actions
TypeScript
MySQL
Node.js
Jenkins
docker-compose

경력

회사명
(주)휴민텍
직책 • 부서
프론트엔드 개발자 • 신사업부
근무 기간 (근무 형태)
2024.01. - 2024.06.
(6개월 | 인턴)
담당 업무
  • 신사업부에서 헬스케어 플랫폼 개발

    • 프론트엔드

      • React, Zustand, tailwindcss 기반 프론트엔드 구축

      • Lexical 기반 WYSIWYG 에디터 개발

    • Jenkins, Docker를 활용한 CI/CD 파이프라인 구축

    • 데이터베이스 스키마 설계

  • 소아암 프로젝트 유지보수

    • 업로드 된 파일 미리보기 뷰어 기능 개발

  • 인프라 관련 보고서 작성

    • 기존 AWS로 운영되던 프로젝트를 분석하고 NCP 마이그레이션 보고서 작성 및 비용 산출

회사명
UDAUM
직책 • 부서
풀스택 개발자 • 개발팀
근무 기간 (근무 형태)
2023.07. - 2023.11.
(5개월 | 프리랜서)
담당 업무
  • 이미지를 조합해서 자신의 캐릭터를 만들 수 있는 Danzzak 서비스 외주 개발 진행

    • 이미지 리소스 관리 자동화

      • 쉘 스크립트로 이미지 파일 정리 시스템 개발

      • 디자이너가 제작한 이미지 파일 관리 자동화

    • 프론트엔드

      • HTML, CSS, JS 기반 프론트엔드 구축

      • 기존 Danzzak 프론트엔드 유지보수

    • 백엔드

      • ExpressJS 활용한 백엔드 구축

      • 어드민 시스템 개발

프로젝트

프로젝트명
Cloud Canvas
소속/기관명
네이버 부스트캠프 9기 그룹 프로젝트
프로젝트 기간
2024.10. - 진행 중
(8개월)
프로젝트 설명

프로젝트 소개

GUI를 기반으로 인프라를 설계하고 Terraform 코드로 변환해주는 인프라 설계 솔루션

프로젝트 주소

깃허브

역할

인프라 설계 및 구축 / Cloud Canvas 서버 개발 / Ncloud SDK 마이그레이션

기술 스택

TypeScript NestJS Prisma MySQL Redis Docker Docker Compose Terraform EFK Grafana Prometheus Github Actions

주요 작업

  • 백엔드 개발

  • 프로젝트 인프라 아키텍처 설계 및 구축

  • 애플리케이션 도커라이징 및 환경에 따른 도커 컴포즈 구성

  • 기존 Ncloud에서 제공하는 Ncloud SDK JS에서 비동기 및 클래스를 지원하도록 타입스크립트로 마이그레이션

  • 모니터링 시스템 구축을 활용한 알림 시스템 구축

  • CI/CD 파이프라인 구축

프로젝트에서 겪은 주요 문제

프로젝트 인프라 설계 및 구축

문서: https://goraedevelop.tistory.com/6

문제

  • 콘솔을 통한 인프라 배치 현황 확인의 불편함.

  • 동시 작업 시 인프라 배치 상태 확인을 위한 비효율적 소통 필요.

  • 개발/프로덕션 환경 간 유사한 인프라 구성으로 인한 중복 작업.

  • 환경 간 마이그레이션을 빠르게 진행 할 수 없는 불편함.

접근 방법

  • 빠른 인프라 배치를 위해 IaC 도구 중 하나인 Terraform 도입.

  • Terraform Module 기능을 활용한 VPC/Subnet 및 Server/Public IP 모듈 제작.

  • Terraform Cloud를 통한 인프라 관리 중앙화 시스템 도입.

결과

  • 팀원들이 코드 베이스를 통해 현재 배포된 인프라를 빠르게 확인 가능.

  • 모듈화를 통해 개발 환경에서 프로덕션 환경으로 시스템 마이그레이션을 빠르게 마이그레이션 할 수 있게 됨.

  • Terraform Cloud를 통해 팀원들이 인프라를 중복 배치하는 사태를 방지하여 사전에 지출되는 비용을 방지

CI 파이프라인 속도 개선

문서: https://goraedevelop.tistory.com/8

문제

  • CI 파이프라인의 긴 소요 시간으로 인해 작은 변경사항도 팀원들이 즉시 배포 결과를 확인할 수 없었음.

  • 팀원들이 파이프라인 완료를 기다리는 동안 작업을 진행할 수 없어 개발 시간이 증가함.

  • CI 파이프라인을 통해 생성되는 도커 이미지의 큰 용량으로 컨테이너 레지스트리 비용이 증가함.

접근 방법

  • Turborepo의 prune 기능을 활용하여 모노레포 의존성을 효율적으로 추출.

  • 도커 이미지 생성 전 프로젝트 빌드를 선행하여 중복 빌드 작업 제거.

  • 베이스 이미지 활용으로 의존성 설치 시간 단축.

  • Turborepo Remote Cache 구현으로 CI 파이프라인에서 캐싱 효율 향상.

  • paths-filter를 활용하여 변경된 모듈/서비스에 대해서만 선택적 도커 이미지 생성.

  • 도커 외부 레지스트리 캐시를 통한 이미지 빌드 속도 개선.

결과

  • CI 파이프라인 소요 시간을 5분에서 2분으로 60% 단축.

  • NestJS 백엔드 도커 이미지 기준, 사이즈를 1.5GB에서 240MB로 80% 단축.

  • 팀원들이 배포 결과물을 즉시 확인할 수 있게 되어 개발 효율성 향상.

프로젝트명
GoormBread
소속/기관명
아주대학교 파란학기
프로젝트 기간
2024.03. - 2024.06.
(4개월)
프로젝트 설명

프로젝트 소개

패미컴의 멀티플레이 게임을 온라인으로 할 수 있도록 지원하는 쿠버네티스 기반 클라우드 게임 프로젝트

프로젝트 주소

깃허브

역할

아키텍처 설계 / 쿠버네티스 클러스터 관리 / 백엔드 개발

기술 스택

TypeScript NestJS Prisma PostgreSQL Redis Docker Docker Compose Grafana Prometheus Github Actions Golang Kubernetes Helm Nginx ArgoCD

주요 작업

  • Kubernetes 기반 인프라 아키텍처 설계 및 구축

  • Github Actions을 활용한 CI 파이프라인 구축

  • Helm Chart와 ArgoCD를 활용한 CD 파이프라인 구축

  • Nginx Ingress를 활용한 클라우드 게임 라우팅 시스템 구축

  • NES 에뮬레이터 원격 키 입력 기능 개발

  • 클라우드 게임 스트리밍 파이프라인 구축

  • Redis의 분산 락을 활용한 실시간 게임 로비 시스템 개발

대외활동

활동명
네이버 부스트캠프 웹 모바일 9기 멤버십 - 웹 풀스택
소속/기관
네이버 커넥트
활동 연도
2024
활동 상세 설명
  • 학습 스프린트를 통해 8주간 자바스크립트 / 타입스크립트 미션 수행

    • CSR 방식이 아닌 SSR 방식을 통해 사용자 UX를 개선

      • 새로고침 시 로컬 스토리지에 스크롤의 위치를 저장하고
DomContentLoaded 이벤트 이후에 복구하는 방식 채택

      • Throttle 방식을 사용해 Drag 이벤트가 브라우저의 매 프레임마다 
실행되는 것을 막아 성능 최적화

    • 웹 서버를 프레임워크가 아닌 net 모듈을 활용하여 타입스크립트로 구현

      • HTTP 요청을 Validation 및 Parse 하는 모듈 개발

      • Express와 비슷한 서버 프레임워크를 개발하여,
반복적인 API 개발을 효율화

활동명
네이버 부스트캠프 웹 모바일 9기 챌린지 - 웹 풀스택
소속/기관
네이버 커넥트
활동 연도
2024
활동 상세 설명
  • 자바스크립트를 활용한 CS 미션 해결

    • 메모리 시스템 직접 구현

    • EventEmitter를 활용한 Pub/Sub 구조 구현

    • net 모듈을 통한 소켓 프로그래밍

    • Git의 commit, status, add 등의 핵심 기능 구현 및
현대 버전 관리 시스템 동작 원리 학습

    • 자바스크립트에서 동작하는 비동기 동작 원리 학습

  • 이후 개인적으로 자바스크립트 프로세스 메모리 구조, V8 엔진의 GC 동작 방식 및 메모리 최적화 방법 연구

활동명
오픈소스 컨트리뷰션 아카데미 체험형 - Git 활용 및 Terraform on Naver Cloud
소속/기관
정보통신산업진흥원
활동 연도
2024
활동 상세 설명
  • IaC 도구인 Terrraform을 학습하고 프로젝트에 적용해 인프라 관리를 편리하게 하고 싶어 가입

  • Terraform 동작원리 학습 및 실습

  • Go를 활용한 Terraform Custom Provider 모듈 개발, 배포

  • 이후 배운 경험을 기반으로 Cloud Canvas 프로젝트 기획 및 개발

활동명
2024년 아주대학교 동계 모각코
소속/기관
아주대학교
활동 연도
2024
활동 상세 설명
  • 리더로서 팀원 관리, 일정 조율, 학습 방향 모각코 활동 방향 설계

  • Kubernetes를 활용한 클라우드 게임 시스템을 구현하기 위해서 팀원들과
관련 내용 학습

  • 세 권의 책을 정독 및 실습 진행

    • 게임 서버 프로그래밍 교과서

    • 도커 교과서

    • 쿠버네티스 교과서

  • 배운 내용을 기반으로 클라우드 게임 시스템에 대한 전반적인 아키텍처
설계 및 구축

  • 활동 결과 장려상 수상

교육

소속/기관
아주대학교
종류 | 전공명/전공계열
대학교(학사) | 디지털미디어학과 / 소프트웨어학과
재학 기간 (재학 상태)
2019.03. - 재학 중
댓글