포트폴리오상세페이지

최은우

학과

컴퓨터공학부

관심분야

학번

2023****22

자기소개

안녕하세요, 백엔드 개발 및 클라우드에 관심이 많은 개발자 최은우입니다.

저는 제가 느꼈던 불편함을 해결하는 툴을 만들기 위해 개발을 시작했습니다. 게임 서버의 API 정보를 가져오는 툴을 만들고자 관련 자료를 찾으며 파이썬에 입문하기 시작했고, 자주 쓰는 채팅 서비스의 베타 API를 활용하기 위해 기존 오픈소스 라이브러리의 확장 모듈을 제작하며 오픈소스 커뮤니티에 대해 알 수 있었습니다. 또한, GitHub Pages로 제작한 소개 웹사이트의 디자인적, 그리고 구성적 한계를 느껴 리액트를 학습해 리액트 기반의 개인 포트폴리오 페이지 또한 제작하였습니다. 이처럼 저는 제 불편함을 해결하기 위해 다양한 분야의 기술에 대해 스스로 습득하였습니다.

또한, 저는 기존 프로젝트에 참여할 때 빠르게 적응하는 능력을 갖추고 있습니다. “Project eTe”에 참여하면서 코드 베이스 및 프로젝트 스트럭쳐를 빠르게 이해해 참여 12일만에 서비스에 오랜 기간 해결되지 않은 버그를 수정하는 Pull Request를 올렸습니다. 또한, “한국 디스코드 리스트”의 팀장 역할을 넘겨 받으면서 Datadog 및 Sentry의 사용법을 빠르게 익혀 현재까지도 프로젝트 관리에 적극적으로 활용하고 있습니다.

저는 이미 사용중인 기술 스택에서 그치지 않고 다양한 분야의 기술에 대해 관심을 가지고 있습니다. 최근에는 클라우드 및 서버에 관심이 있어 학습 및 활용하고 있습니다. AWS의 과도한 비용 문제를 해결하기 위해 대안이 될 수 있는 클라우드 서비스에 대해 리서치하고 Linode로 이전을 완료했습니다. 또한, 지인들과 중고 렉서버를 구입해 VM 서버를 공동으로 구축 및 운영하고 있습니다. 이 과정에서 RHEL 기반 리눅스 배포판들의 차이점을 알아보고 AlmaLinux를 선택해 QEMU KVM 기반으로 VM 서버를 구축했습니다. 앞으로도 제가 직면한 문제를 해결하기 위해 새 기술을 습득하고 활용하는 것을 멈추지 않을 것입니다.  

이수교과목

1-1
소프트웨어 원리
미적분학

1-2
UX 프로그래밍
IoT 프로그래밍
데이터통신
이산수학

2-1
객체지향프로그래밍I
객체지향프로그래밍응용
컴퓨터프로그래밍
컴퓨터프로그래밍응용

사용가능기술

언어
Python
JavaScript / TypeScript
Java
C / C++

프레임워크/라이브러리
Flask
FastAPI
Sanic
aiohttp
React / React Native
Next.js
TailwindCSS

데이터베이스
MariaDB
SQLite
MongoDB

클라우드/배포
AWS EC2
Akamai Linode
Vercel
Datadog
Sentry
Docker / Docker Compose
GitHub Actions
GitHub Registry
Cloudflare

개발 도구 및 기타
git
GitHub
IntelliJ IDEA 및 해당 계열 IDE
Ubuntu
Notion  

수행 프로젝트

한국 디스코드 리스트
- 수행 인원: 10명
- 개발 환경: TypeScript, Next.js, TailwindCSS, MariaDB, MongoDB, Akamai Linode, Vercel, Cloudflare, Sentry, Datadog
- 웹페이지: https://koreanbots.dev/
- GitHub: https://github.com/koreanbots

한국 디스코드 리스트는 온라인 채팅 플랫폼인 디스코드에서 사용할 수 있는 챗봇 및 커뮤니티 서버를 홍보할 수 있는 서비스를 제공하고 있으며, 약 638개 이상의 챗봇 및 1345개 이상의 서버가 사용하고 있습니다. 하루 약 3천명의 방문자를 기록하고 있으며, 구글 기준 웹사이트 관련 검색어인 “디스코드 봇”, “디코봇” 등의 검색어 결과에서 1위를 유지하고 있습니다. 저는 팀장으로써 한국 디스코드 리스트 팀의 운영을 총괄하고 전반적인 사이트 인프라스트럭쳐를 관리 및 유지보수하고 있습니다.

최근 작업으로는 호스팅으로 AWS EC2를 사용하고 있었는데, 사용 요금이 웹사이트 광고로 버는 수익 이상으로 나오고 있어 Akamai Linode로 클라우드를 이전했습니다. 이 과정에서 기존에 이미 Docker Compose를 통해 배포를 하고 있어 데이터베이스 볼륨을 복사하고 컴포즈 파일 재작성 및 기존에 docker run으로 구동되고 있었던 일부 컨테이너를 컴포즈로 마이그레이션하는 작업을 진행했습니다. 또한 과거에 GitHub Actions를 통해 빌드한 도커 이미지를 AWS ECS로 저장하고 있었는데 비용 절감을 위해 GitHub Registry로 이전하는 작업도 진행했습니다.

웹사이트 통계 수집용 Google Analytics와는 별개로 웹사이트 모니터링 및 버그 추적을 위해 Sentry 및 Datadog를 사용하고 있습니다. 실제로 어뷰징 트래픽을 감지 및 처리하기 위해 Datadog의 로그를 이용했으며, DDoS 공격을 받았을 당시 Datadog 모니터링을 통한 이메일 알림으로 빠르게 Clouldflare 설정 변경을 통해 대응할 수 있었습니다.

비록 초기부터 참여한 프로젝트는 아니라 개발에 관해서는 크게 기여하지 못했으나, 해당 프로젝트를 통해 규모가 있는 웹서비스의 운영 전략과 유지보수 방법, 그리고 Next.js 프로젝트의 구조에 대해 알 수 있었습니다.

dico-api
- 수행 인원: 1명
- 개발 환경: Python, PyPi
- GitHub: https://github.com/dico-api

dico-api는 온라인 채팅 서비스인 디스코드의 API 전체를 래핑하는 파이썬 라이브러리 프로젝트 입니다. 단순히 래핑에서 끝나는 것이 아닌, 추가 모듈을 통한 쉬운 라이브러리 사용 및 여러 프로젝트에서 가볍게 붙여 쓸 수 있도록 목표하여 진행한 프로젝트입니다.

동기 및 비동기 모두 지원할 수 있도록 모듈을 세부적으로 나눴으며 HTTP 처리 관련 코드는 추상 클래스를 이용해 비동기 및 동기 HTTP 핸들러를 각각 제작하였습니다. 또한, HTTP 레이트리밋 처리를 API 문서에 맞게 처리할 수 있도록 버킷 단위로 핸들링했습니다.

디스코드 챗봇을 만들 수 있도록 웹소켓 클라이언트 또한 제작하였으며 이벤트 핸들러를 통해 웹소켓으로 받는 이벤트를 적절히 처리할 수 있도록 했습니다. 또한, 음성 송신을 위해 Opus 라이브러리를 불러와 디스코드 음성 서버와 소켓을 통해 통신 및 음성 데이터를 보낼 수 있도록 제작하였습니다.

해당 프로젝트를 통해 API를 래핑하고 라이브러리를 제작하는 경험을 할 수 있었으며, 웹소켓 통신에 대한 이해를 할 수 있었습니다.

discord-py-slash-command (interactions.py)
- 수행 인원: 1명
- 개발 환경: Python, PyPi
- GitHub: https://github.com/interactions-py/interactions.py

온라인 채팅 서비스인 디스코드의 비공식 API 래퍼 중 파이썬에서 가장 많이 사용되는 discord.py에 대해 당시 베타로 공개되었던 Interactions API를 사용할 수 있도록 해주는 확장 모듈이었습니다. 당시 discord.py의 구조에 맞게 해당 API를 지원하게 만들기 위해 discord.py의 소스코드를 분석하고 일부 클래스에 대해 상속 및 오버라이딩해 해당 API의 구조에 맞게 변형 및 처리했습니다. 프로젝트 소유권을 이미 타인에게 넘겨 현재는 디스코드 API 전체를 래핑하는 프로젝트로 변경되었습니다.

베타 API 공개 직후 빠르게 제작 및 오픈소스로 공개하여 많은 사람들의 관심을 얻고 소유권 이전 전까지 깃허브에서 120 스타를 얻을 수 있었습니다. 이 과정에서 여러 사람들로부터 문서 작성에 대한 도움을 얻거나 버그 수정, 기능 추가 등의 기여 요청을 여러번 받을 수 있었습니다. 허나 당시 학업 문제로 프로젝트 시작 6개월만에 활발하게 기여하고 있던 다른 개발자에게 프로젝트를 넘기게 되었습니다.

해당 프로젝트를 통해 오픈소스 커뮤니티에 대한 이해와 영향력을 알 수 있게 되었고, PyPi를 통해 패키지를 배포하고 관리하는 경험 또한 얻을 수 있었습니다.

Project eTe - eTeBot
- 수행 인원: 5명
- 개발 환경: Python, MongoDB, AWS EC2, GCP Cloud Logging
- 웹페이지: https://etebot.io/
- 봇 문서: https://doc.etebot.io/

Project eTe는 온라인 채팅 서비스인 디스코드에서 사용할 수 있는 챗봇을 제작하는 팀입니다. eTeBot은 디스코드 서버를 관리 및 활용할 수 있는 챗봇이며, 약 8000개 이상의 디스코드 서버에서 이용하고 있습니다. 대표 기능으로는 임시 음성 채팅 채널을 생성 및 랜덤으로 음성 채널을 배정하며, 가상 주식 시장 게임을 제공하고 있습니다. 저는 해당 팀에서 eTeBot의 기능 유지보수 및 신규 기능 제작과 프로젝트 웹사이트 유지보수를 담당하고 있습니다.

최근에 개발한 기능으로는 봇 내에서 이용할 수 있는 가상 주식 시장 게임 시스템이 있는데, 단순히 주가를 랜덤으로 생성하는 것이 아닌 AI를 통해 특정 시기 동안의 트렌드 및 트렌드 기반 뉴스를 생성하여 주가가 변동되게 제작하였습니다. 이 중 주식 매수/매도 및 봇 내 가상 재화의 변동이 이루어지는 로직 제작 및 사용자가 게임 기능을 이용하는데 필요한 명령어 및 UI 제작을 담당하였습니다. 내부 깃허브 레포지토리에서 깃 브랜치를 통해 주식 매수 로직, 주가 변동 로직 등 기능 단위 별로 개발 및 개발팀에서 코드 리뷰를 통해 병합을 하며 실수로 인해 발생할 수 있는 버그를 사전에 방지하고 프로젝트의 전반적인 코드 스타일을 준수할 수 있도록 했습니다. 또한, 디스코드 봇 라이브러리가 비동기 기반으로 제작된 만큼 주식 매수/매도 시 동시성 문제로 게임 재화 트랜잭션에서 발생할 수 있는 오류를 방지하기 위해 사용자 단위별로 비동기 Lock을 구성하는 등 서비스 출시 후 문제가 없도록 여러 면에서 고려하고 개발하였습니다.

해당 프로젝트를 통해 비즈니스 로직의 분리 및 모듈을 나누는 단위 등 프로젝트 스트럭쳐의 구성에 대해 고민할 수 있었으며, 기능 기획과 역할 분담 및 코드 리뷰 등 협업을 경험해볼 수 있었습니다.

UpClot
- 수행 인원: 2명
- 개발 환경: TypeScript, React Native, TailwindCSS(NativeWind)
- 발표 자료: https://drive.google.com/file/d/1caldO82XY0FqJ2ktZbHATpXQ0YZiA8Rv/view?usp=sharing

"제6회 전국 청년 아이디어톤 대회"에 출품한 아이디어로, 대회 주제인 "기후테크 5대분야 문제를 정책 및 청년창업과 결합한 아이디어"로 헌 옷을 스마트폰 케이스로 재활용할 수 있는 플랫폼을 제출했습니다. 저는 해당 대회에서 플랫폼 시연을 위한 데모 애플리케이션 제작을 담당했습니다.

기획이 완료된 후 데모 애플리케이션 제작을 짧은 시간 동안 진행했습니다. API를 통한 실제 통신이나 데이터베이스 이용 등은 이루어지지 않았으나, 추후 실제 서비스를 진행할 경우 활용할 수 있도록 데이터 스트럭쳐를 정의해 예시 값을 기반으로 렌더링하도록 제작했습니다. 또한, 사용자가 앱을 사용할 때의 플로우를 고민해 일부 요소에 애니메이션을 넣거나 이전 동작을 하지 않으면 일부 컴포넌트를 숨기도록 했고, 모달을 활용해 사용자의 주소를 얻기 위한 팝업창을 띄우기도 했습니다.

해당 대회 참여를 통해 팀원과 소통하며 코드를 실시간으로 수정 및 의견을 반영하고 빠른 시간에 결과물을 만들어내기 위한 설계 방법 등의 경험을 할 수 있었습니다. 또한 우수상 수상이라는 값진 결과 또한 얻을 수 있었습니다.

동아리 
GDSC 삼육대학교 - Core Member (2023.09.01 ~)
임원인 Core Member로 활동하며 동아리 운영에 참여 및 GitHub 세션과 Python 세션을 통해 동아리원들에게 깃허브의 사용 방법과 파이썬 기초 문법 강의를 진행했습니다.

COD36EEK - 부회장 (2024.03.01 ~), 임원 (2023.09.01 ~)
정보보안 동아리에 활동하며 동아리 운영에 참여하였으며 주로 CTF에 참여 및 워게임 풀이를 진행했습니다.

기타 활동 및 수상
TOEIC 945점
TOPCIT 20회 정기평가 3수준 (440점)
프로그래머스 PCCP(코딩전문역량인증) Lv3 (Python3, 627점)
제6회 전국 청년아이디어톤대회 우수상
  • 담당부서
    소프트웨어 중심대학
  • 전화번호
    02-3399-3633
최종수정일 : 2024년 06월 10일