DanmeonPython, AWS, DB(RDBMS, NoSQL), Docker 등 다양한 기술을 배우고 있습니다.
Portfolio
About
Python을 활용해 창의적인 것들을 만드는 것에 큰 열정을 가지고 있으며, 서버와 데이터베이스와 같은 백엔드 분야를 탐구하며 새로운 개념을 배우는 데서 큰 즐거움을 느낍니다.
또한, 기술이 끊임없이 발전하는 세상에서 발맞추어 나가기 위해, 지속적으로 새로운 개념과 기술을 배워나가고 있습니다. 이러한 지식을 바탕으로 사용자에게 가치 있는 서비스를 제공하는 것이 제 목표입니다.
Contact Me
학습 중인 내용
① Kubernetes - Docker와 Docker Compose를 사용하면서 복잡했던 빌드와 배포 과정을 간단한 파일 몇 개와 명령어로 줄일 수 있어 많은 편의를 느꼈습니다. 이러한 경험을 바탕으로 여러 컨테이너를 효과적으로 관리할 수 있는 Kubernetes에도 관심이 생겼습니다. 현재 강의를 통해 Kubernetes의 다양한 기능과 사용법을 배우고 있으며, 이를 통해 시스템 운영의 효율성을 더욱 높일 수 있기를 기대하고 있습니다. Kubernetes 학습은 Docker 경험을 바탕으로 보다 복잡한 시스템의 관리와 최적화에 대한 이해를 깊게 할 수 있는 좋은 기회가 될 수 있을 것이라고 기대하고 있습니다
② Jenkins - Jenkins에 대한 이해는 아직 초기 단계이지만, 이 도구가 Kubernetes와 자주 연계되어 사용된다는 점에서 그 중요성을 인식하고 있습니다. CI/CD(지속적 통합 및 지속적 배포)에 대한 기본적인 지식을 바탕으로, 점차 Jenkins를 통해 더욱 체계적이고 자동화된 소프트웨어 개발 및 배포 프로세스를 구축하는 방법을 배우고 싶습니다. 현재는 Jenkins의 다양한 기능과 설정에 대해 조금씩 배우고 있으며, 이 과정이 다소 어렵게 느껴지기도 하지만 이러한 과정을 통해 개발 작업의 효율성을 높이는 것이 목표입니다.
③ Github Actions 처음에는 Kubernetes와 Jenkins 학습 전에 임시 CI/CD 도구로 사용할 계획이었던 GitHub Actions를 실제로 경험해보니 편리함과 재미 때문에 지속적으로 학습하고 싶다는 생각이 들었습니다. GitHub Actions는 복잡한 인프라 설정 없이도 워크플로우를 신속하게 구성하고 실행할 수 있다는 점이 특히 더 매력적으로 느껴졌습니다. 이러한 경험을 바탕으로 앞으로 GitHub Actions의 더 많은 기능을 탐색하고 응용하는 것을 목표로 하고 있습니다.
④ FastAPI & RESTful API - 현재 FastAPI를 기반으로 몇 가지 프로저트를 진행하고 있으나, 아직 이 프레임워크를 완전히 활용하고 있진 않다고 느끼고 있습니다. 이에 FastAPI 문서를 꼼꼼히 살펴보고 RESTful API의 개념을 더 깊이 이해하고자 노력 중입니다. 이전에는 Django를 학습할 계획이었지만 WSGI 기반의 구조와 비교적 경직된 아키텍처를 가진 Django보다는 FastAPI가 더 다양한 기능을 제공하는 것처럼 느껴져 FastAPI의 스킬을 더욱 키우기로 결정했습니다. 다만, Django가 CMS를 포함한 여러 관리 시스템과 일부 웹 플랫폼에는 FastAPI보다 더욱 적합한 프레임워크임을 알고 있고 이와 더불어 Django에 대한 개인적인 호기심 때문에 Django를 활용한 프로젝트도 추후에 시도해보고 싶은 욕심이 있습니다.
⑤ Jira - Jira라는 협업툴을 처음 접하고 아직은 완전히 익숙해지진 않았지만 프로젝트를 진행하면서 점차 배워나가려고 노력하고 있습니다. Jira를 100% 활용하는 것보다는 이와 같은 협업툴을 왜 사용하는지, 어떻게 사용하는지를 파악하는 데에 더 중점을 두고 있습니다.
⑥ 기타 - 개인적으로 AI, JavaScript, Oracle, Django 등의 여러가지 흥미로운 기술과 개념에 관심이 있지만, 현재 이미 학습 중인 있는 다양한 다른 기술들로 인해 아직 익히지 못한 것들이 많습니다. 그래도 언젠가는 이런 기술과 개념들도 배우고 싶다는 욕심을 가지고 있습니다.
Api 서버 개발
개요 Python 웹 프레임워크인 FastAPI와 크로스 플랫폼인 Flutter를 활용한 쇼핑몰 어플리케이션
주요 기능 ① 기본적인 회원 관리 기능 (일반 로그인 및 소셜 로그인, 회원가입/탈퇴, 회원정보 변경 등) ② 커뮤니티 기능 (댓글 및 답글, 좋아요, 차단, 신고 등) ④ 결제 기능 (통합 결제 솔루션 활용 및 개선) ④ 제품 정보 관련 기능 (제품 상세 페이지, 제품 등록, 리뷰, 문의 등) ⑤ 검색 기능 (단순 키워드 기반 검색으로 구현하였지만, AWS Elasticsearch 도입을 위해 스터디 진행 중)
기술 스택 [백엔드] ① FastAPI & Nginx ② Docker (Docker Compose) ③ Mysql(AWS RDS) ④ Redis ⑤ AWS infra (SES, Route 53, S3, EC2, Loadbalancer)
[프론트엔드] ① Kotlin (Flutter로 리팩토링 진행)
느낀 점 본 API 서버를 만들면서 백엔드쪽에 대한 지식을 다방면으로 향상시킬 수 있는 소중한 경험을 가질 수 있었습니다.
비록 모든 과정을 독학으로 진행해 와서 아직 부족한 부분이 많지만, 이러한 경험을 통해 기존 시스템을 개선해 나가는 과정 자체가 큰 재미를 주고 있습니다.
FastAPI라는 프레임워크를 처음 사용해 볼 수 있었던 프로젝트로, REST API 서버의 개념과 구조에 대해서 새롭게 알게되는 계기가 되었고, RESTful API에 대해서도 관심을 가지게 되어 이에 대해 더 공부해보게 되는 계기 또한 가질 수 있었습니다.
배우고 싶은 점 및 아쉬운 점 다중 서버 관리를 보다 효율적으로 수행하기 위해 Jenkins와 Kubernetes를 도입하고 싶었지만, 우선적으로 기존 서버의 문제점 해결과 구조 개선에 집중하게 되었습니다. 이로 인해 이 두 시스템에 대한 깊은 이해를 하지 못한 것이 아쉽습니다. 현재 관련 스터디를 진행 중이며, 추후 이 시스템들을 더 깊게 이해하고 활용할 수 있기를 희망하고 있습니다.
소켓 서버 개발
개요 Python 웹 프레임워크인 FastAPI와 socket.IO 라이브러리를 활용하여 랜덤 채팅/인증 기능 구현을 위해 React 프론트엔드 서버와 통신하는 백엔드 서버
주요 기능 ① 특정 API 서버와 통신하여 인증 정보를 가져와 사용자 인증 진행 ② 랜덤 채팅에 필요한 기능(방 생성 및 제거, 대기열, 대화)들을 간략하게 구현
기술 스택 [백엔드] ① FastAPI ② Socket.IO
느낀 점 처음으로 프론트엔드와 협업을 진행한 프로젝트로, 프론트엔드와 협업을 진행할 때에는 어떤 점을 협의하고 개발을 진행해야하는지, 통신은 어떤 방식으로 이루어지는지 등에 대한 정보를 간략하게나마 새롭게 익힐 수 있게되어 만족스러웠습니다.
또한, 해당 프로젝트 진행 중 메모리 누수가 지속적으로 발생하여 이를 해결하기 위해 여러 자료들을 찾아보면서 Python의 메모리 구조 및 관리 방법에 대해서 더 자세히 알아볼 수 있는 기회가 되었습니다. 메모리 문제는 gc를 직접 돌리거나, crontab을 활용하여 주기적으로 서버 점검을 진행하는 방법으로 일부 해결은 하였지만, 메모리 문제는 백엔드 서버의 영원한 문제임을 깨닫게 되는 계기가 되었습니다.
배우고 싶은 점 및 아쉬운 점 Socket.IO이라는 새로운 기술을 활용하여 실시간 데이터 송/수신에 대하여 배워볼 수 있었지만, 다른 프로젝트에 비해 우선순위가 밀리게 되어 더욱 깊게 파고들지 못 한 점이 아쉬웠습니다.
Discord 봇 개발
개요 Python Discord 라이브러리를 활용하여 특정 게임에 특화된 유틸리티 봇과 랜덤 매칭 봇 총 2개의 봇을 현재 서비스 중. 각 봇은 1,000여 개의 서버 및 4천여 명의 사용자가 현재 이용 중
주요 기능 ① 특정 API 서버(게임 API 서버, OpenAI API 서버, 기상청 API 서버)와 통신하여 다양한 정보를 불러오는 기능 ② 사용자 입력 정보를 기반으로 랜덤하게 1:1 매칭 서비스를 제공하는 기능
기술 스택 [백엔드] ① Python Discord 라이브러리 ② EC2 & Naver Server ③ SQLite & MySQL (AWS RDS)
느낀 점 처음에는 단순히 편의성을 위해 개발을 시작했으나, 시간이 지나면서 기능이 추가되고 사용자가 늘어나면서 서비스 제공에 대한 책임감도 커졌습니다. 이 과정에서 특정 서비스를 제공할 때 QA의 필요성, 기능의 직관성, 예상치 못한 오류 발생 가능성, 트래픽 관리의 중요성 등 다양한 교훈을 얻었습니다.
또한, 개인 개발자로서 더 전문적인 개발 프로세스를 경험하기 위해 미흡하지만 GitHub을 통한 버전 관리, 업데이트 기록 작성, 사용자 문의 대응 등 팀에서 이루어지는 작업들을 시도해보며 실제 업무 수행 시 필요한 절차와 방법에 대해 고민할 기회가 되었습니다.
추가로, 비동기 프로그래밍에 대해서 더 깊게 알 수 있게 되는 계기가 되었습니다. 예를 들어, 현재 총 1000여개의 서버에서 봇이 동작하다 보니 특정 메시지를 보낼 때에 뒤로 갈수록 지연(5분 이상)이 발생하는 경우가 있었습니다. 이를 해결하기 위해 asyncio 라이브러리에 대해 더욱 깊게 탐구하였고 결국 지연을 효과적으로(5초 내외) 줄일 수 있었습니다. 이런 경험은 매우 값지고 재미있게 느껴졌습니다.
배우고 싶은 점 및 아쉬운 점 본 프로젝트는 매우 흥미롭게 진행되고 있으나 문제점이 있었습니다. 현재 총 5개의 서버에서 봇을 관리하고 있지만, Jenkins나 Kubernetes에 대한 지식이 부족하여 서버 변경 사항을 일일이 수동으로 업로드해야 하는 점이 상당히 아쉬웠습니다. 이를 보완하기 위해 각 시스템에 대한 스터디를 진행 중이지만, 해당 프로젝트에 할당할 수 있는 시간이 부족하여 다양한 시스템 도입을 시도해보지 못한 점이 더욱 아쉽게 느껴집니다.
아두이노 유량센서
개요 MQTT(Mosquitto) 및 Arudino ESP32를 활용하여 유량 센서를 통해 유체의 흐름을 실시간으로 감지하여 그래프로 띄워주거나 LED로 현재 유량을 시각적으로 표기하는 제품
주요 기능 Arudino 유량 센서를 통해 유량을 측정한뒤, 시계열 데이터베이스인 InfluxDB에 저장하고 유량에 따라 LED의 색깔 변화를 통해 적정 유량이 흐르고 있는지 확인함. 이후 측정된 유량 데이터는 Grafana를 통해 시각화
기술 스택 [백엔드] ① MQTT (Mosquitto) ② Arduino (ESP32) ③ InfluxDB (TSDB)
[프론트엔드] ① Grafana
느낀 점 InfluxDB와 Grafana를 실제 프로젝트에서 처음 사용해본 사례로, 센서로 측정된 실시간 데이터가 그대로 Grafana에 연동되어 시각화할 수 있다는 점이 매우 흥미롭게 느껴졌습니다. 본 프로젝트는 한 업체에서 요청한 기능을 구현하는 것이 목표였는데, 업체 요구사항에 따라 다양하게 알고리즘을 짜고 생각을 새롭게 펼쳐나가는 등 좋은 경험이 되었습니다.
배우고 싶은 점 및 아쉬운 점 일반적으로 많이 사용하는 RDS나 NoSQL이 아닌 TSDB라는 새로운 데이터베이스를 사용해 볼 수 있었지만 TSDB에 대해 간략한 개념만 익히고 깊게 배우지 못한 점이 크게 아쉽게 다가왔습니다. 개인적으로 TSDB에 대해 더 깊게 배워보고 싶다 라는 생각이 들게된 프로젝트였습니다.
[졸업 작품]스마트 진동벨
개요 Python MQTT(Mosquitto)와 Arudino ESP32를 활용하여 도난 방지 기능이 첨부된 스마트 진동벨을 기존 시장 대비 저렴하게 제작
주요 기능 ① 주문 내용(Ex. 아메리카노 5잔) 표기 (LCD 디스플레이 활용) ② 카운터에서 신호를 보내면 진동을 통해 주문이 완료되었음을 알 수 있는 기본적인 진동벨 기능 ③ MQTT와 부저 센서를 활용한 도난 방지 기능 (특정 구역을 벗어나면 부저 동작)
기술 스택 [백엔드] ① MQTT (Mosquitto) ② Arduino (ESP8266, ESP32)
느낀 점 본 프로젝트는 졸업 작품 제작을 위해 2인으로 기획부터 HW 및 SW까지 진행한 프로젝트로, 다른 팀 대비 부족한 인원으로 다소 어려움이 많았지만 끈기와 노력으로 성공적으로 완료할 수 있었습니다. 프로젝트를 진행하면서 제품이 시장에서 경쟁력을 가지기 위해서는 완성도 뿐만이 아닌 다른 여러 특장점(가격, 디자인 등)이 필요하다는 것을 깨달을 수 있었습니다.
배우고 싶은 점 및 아쉬운 점 시간과 가용 가능한 인력이 더 많았다면 여러가지 기능(회원 관리 기능 등)을 넣을 수 있을지 않았을까 라는 아쉬움이 많이 들었던 프로젝트였습니다. 또한 결과물은 성공적으로 동작하였으나, 디자인 측면에서는 프로젝트 인원 둘 다 뛰어나지가 않아 제품 디자인 쪽에서도 많은 아쉬움이 남았습니다.