미리보기
기본 정보
- 새로운 기술이나 개념을 빠르게 수용하고 적용하는 것을 중요시 여기며, 항상 성장하는 모습을 보이고자 합니다. - 소통을 중요시하며, 다른 사람들과의 협업을 통해 팀의 목표를 달성하는 것에 즐거움을 느낍니다. - 조언을 빠르게 받아들여 스스로 발전하는 것을 좋아합니다.
프로젝트
순차적인 의존성으로 묶인 여러 작업들이 종속된 워크플로우를 생성하고 실행을 자동화하는 엔진 개발
사이드 팀 프로젝트
2023.12. ~ 2024.03.
해당 솔루션은 워크플로우를 생성하여 종속된 작업들을 의존성에 따라 순차적으로 실행합니다. 각 작업들은 비동기 처리되어 도커 이미지를 활용한 컨테이너로 실행됩니다. 또한 스케줄링 기능을 통해 워크플로우의 예약 실행과 주기적인 반복 실행을 지원합니다.
[ 사용 기술 및 도구 ]
- Python, Django, Celery, PostgreSQL, Redis, Docker, Docker-compose, Swagger, GitHub, GitActions, Jira, Notion
[기여]
- Redis를 통한 분산 처리 락 시스템 구현
- 빈번한 데이터 접근을 고려하여 RDBMS로부터 데이터를 캐싱하고 Redis를 인메모리 데이터스토어로 활용하여 성능을 향상시켰습니다. 더불어, 동시 접근으로 인한 동시성 문제를 해결하기 위해 Redis를 활용한 분산 처리 락 시스템을 설계하고 구현했습니다. 이를 통해 데이터 일관성을 유지하고 시스템의 안정성을 높였습니다.
- 관련 PR 링크: https://github.com/workflow-engine-project/workflow-engine/pull/34
- 다중 선후 관계 처리
- 해당 프로젝트에서는 복잡한 다중 작업 간의 순서와 의존성을 효과적으로 관리하기 위한 알고리즘을 개발했습니다. 이 알고리즘은 작업들 간의 순서를 명확히 정의하고, 작업 간에 의도치 않은 역전이 발생하지 않도록 보장합니다. 이를 통해 작업들이 정확한 순서대로 실행되며, 워크플로우의 안정성과 신뢰성을 크게 향상시켰습니다. 이러한 다중 선후 관계 처리 기능은 프로젝트 전체적인 효율성과 성능을 향상시키는 데 중요한 역할을 하였습니다.
- Docker 및 Docker-compose 활용
- 다중 컨테이너 환경을 설정하고 관리하기 위해 Docker 및 Docker-compose를 활용하였습니다. Python 환경을 설정하는 Dockerfile과 서비스 간의 의존성을 정의하는 docker-compose.yml 파일을 작성하여 개발 환경을 효율적으로 구축했습니다.
- 클린 아키텍처와 REST API 구현
- 클린 아키텍처의 원칙을 준수하여 비즈니스 로직과 데이터 액세스 계층을 명확히 분리하여 유연하고 확장 가능한 아키텍처를 설계했습니다. 이를 토대로 REST API를 구현하여 각 계층 간의 통신을 원활하게 조율하고, 클라이언트에게 필요한 데이터를 쉽게 제공했습니다. 이는 코드의 가독성을 높이고 유지 보수성을 향상시켰습니다.
깃허브 링크: https://github.com/giyong-choi/workflow-engine
노션 링크: https://legend-crocodile-519.notion.site/ec0cb104e7a0416d812aa51699941d67
개발자 커뮤니티 웹 사이트 개발
이스트소프트
2023.10. ~ 2023.11.
유저가 프로젝트 포트폴리오, 프로젝트 팀원 모집, 질의응답 게시물 관리 기능을 제공하고, 유저의 프로필 및 게시물을 확인할 수 있는 유저 페이지를 제공하고, 사용자 간 채팅이 가능하고, 프로젝트 요청 및 관리가 유저 간에 실시간 알림으로 가능한 커뮤니티 플랫폼을 개발하였습니다.
[ 사용 기술 및 도구 ]
- Python, Django, PostgreSQL, Redis, AWS EC2, JavaScript, HTML/CSS, GitHub, GitActions
[기여]
- 데이터베이스 설계
- 데이터베이스를 직접 설계하고 Django ORM을 작성함으로써 데이터 모델링과 ORM 활용에 대한 경험을 쌓았습니다. 이를 통해 데이터베이스의 구조와 관계를 잘 이해하고 효율적인 데이터베이스 설계 및 관리 능력을 키웠습니다.
- 웹소켓 및 Django Channels를 활용한 실시간 채팅방 구현
- 웹소켓 및 Django Channels를 활용하여 실시간 채팅방을 구현하였습니다. 더불어, Redis Pub/Sub을 통해 메시지 브로커로 사용함으로써 채팅 메시지를 효율적으로 처리하고 관리할 수 있었습니다. 클라이언트와 서버 간의 양방향 통신을 구현하고, 네트워크 레벨에서의 라우팅과 서버 설정을 경험했습니다.
- AWS EC2를 통한 프로젝트 배포
- AWS EC2를 통한 프로젝트 배포 경험은 클라우드 기술을 활용하여 서비스를 운영하는 핵심 능력을 키웠습니다. EC2 인스턴스 생성과 운영체제 선택부터 보안 그룹 설정, 데이터베이스 연동 등을 경험하며 클라우드 인프라 관리와 서비스 안정성 향상에 기여했습니다.
- GitHub Actions를 통한 프로젝트 CI/CD 파이프라인 구축
- 파이프라인 구축GitHub Actions를 통해 CI/CD 파이프라인을 구축하여 효율적인 개발 및 배포 프로세스를 구현했습니다. CI는 코드 푸시 이벤트에 대해 병렬 실행이 가능하도록 설정되었고, CD는 CI 작업 완료 시 자동으로 트리거되어 배포 서버에 자동 배포됩니다. 보안은 GitHub Secrets를 통해 관리되며, SSH를 이용하여 배포 서버에 대한 관리 작업이 자동화되었습니다.
배포 링크: https://devs-comm.com/
깃허브 링크: https://github.com/giyong-choi/dev_community
기술 스택
Python, Django, PostgreSQL, Celery, Redis, Docker, Git
포트폴리오
교육
이스트소프트
사설 교육 | 오르미 2기 백엔드 개발자 교육과정
2023.06. ~ 2023.11. | 졸업
세종대학교
대학교(학사) | 기계공학과
2015.03. ~ 2021.02. | 졸업
경력
주식회사 사운드캠코리아
사원 | 기술지원
2022.03. ~ 2023.01. (11개월)
음향 카메라 회사에서 비 개발 직무인 현장 기술 지원 엔지니어로 약 1년간 근무하였습니다.
재직 기간 동안 LG전자와 함께 공장 라인 제품 이상 소음 불량 판별기 개발 프로젝트를 도맡아 협업을 진행했습니다.
여러 협력사와 함께 협업을 진행하는 경험을 통해 업무적 소통 능력을 키웠습니다.