2024년 상반기 자기소개서, 포트폴리오

2024. 3. 19. 21:19프로젝트

 

 

 

👤 자기소개

  • 직업: 수학과 공부를 좋아하는 💻 프로그래머
  • 목표: 은퇴 이후에도, 평생 공부하며 발전하는 사람
더보기

 어릴 적 책 관련 사업을 하시던 부모님의 영향으로 집에는 책이 수천 권 있었습니다. 자연스럽게 독서 습관이 생겼고, 여러 지식을 습득하는 재미를 알게 되었습니다. 고등학교를 거쳐 평생 공부를 하며 지식을 습득하고 발전할 수 있는 직업을 원하게 되었습니다.  

 

 

 

 

 

 

 


  • 내가 되고 싶은 개발자: 🌟  새로운 기술을 배우고 적용하는 것을 좋아하며, 남들의 불편함을 해결하기 위한 개발에 열정을 가진 개발자,  변화를 두려워하지 않고, 더 나은 미래를 위한 개선에 주저하지 않는 개발자
더보기

 여러 책이나 매체를 접하게 되면서 워런 버핏이라는 인물을 알게 되었습니다. 1명의 개인이 세상의 흐름을 잘 읽는 모습에 존경심을 품게 되었습니다. 이를 배우기 위해, 기술 트렌드나 전망에 대한 에세이를 남기는 블로그를 운영하기도 했습니다. 

 그러던 중, 코로나19로 인해 사회의 변화가 빠르게 일어나는 것을 보았습니다. 제 블로그에 30만 명이 방문할 정도로 사회는 트렌드에 민감해지고, 비대면, 블록체인, 메타버스 등 서비스 플랫폼의 중요성이 대두되는 것을 관찰했습니다. 이를 통해, 저는 서비스가 사회에 기여하고 사람들에게 큰 도움을 줄 수 있다고 깨달았습니다. 기존에는 지식 습득을 중점으로 하여 수학과에 다니고 있었지만, 가치관이 바뀌고는 전기 및 전자과로 전과를 선택했습니다.

 이후, 다른 사람의 불편을 해결할 수 있는 일에 대해 계속 고민하는 습관이 생겼습니다. 일례로, 인턴 실습 활동 중 항상 점심 메뉴를 고민하고 토의하던 사우들의 모습을 보고 Slack Bot을 만든 적이 있습니다. ChatGPT API를 이용하여 메뉴 투표, 추천, 위치 기능을 제공했고, 기술로 다른 사람을 도울 수 있음을 더욱더 느꼈습니다. 이는 개발자가 되겠다는 목표를 확고히 하는 계기가 되었습니다.

 

 저는 새로운 것을 공부하고 적용하는 것을 좋아하며, 다른 사람의 불편함을 고민하고 해결해 주는 것을 즐기는 개발자가 되고 싶습니다. 어떠한 개선이 “누군가에게 도움이 되는가?”, “나에게 도움이 되는가?”를 판단했을 때, 명확하게 좋은 방향이라면 무조건 분석해보고 실행합니다. 이에 대한 두려움보다, 변화로 인해 더 나아진 미래를 상상하는 것을 좋아합니다.

 

 

 

 

 


 

🛠 희망 분야

나의 기술 스택: 👩‍💻 AWS, ASP.NET, Docker, k8s, Python, Git, Perforce, Java, MySQL

희망 분야: 🎯 BE/인프라 - 서비스 개발, 사용자 경험 최적화, 서비스 인프라 고도화, 서비스 아키텍처 설계, 대규모 트래픽 관리

 

 

 

 

 

 


 

🏆 경험 & 프로젝트 요약

 

 

 

 


 

멀티 플레이 게임 개발 경험

🎮 AI 포함 16인 플레이어 배틀 로얄 장르의 생존 멀티 게임 개발. 4인 팀 협업.

* 기술 스택 : Unity, Photon, JSON, Jenkins, ML Agent, C#

* 기간 : 2022.07 ~ 2022.09 (2개월)

* 나의 역할 

  1. 클라이언트 개발 : 플레이어 전투/무기 구현, 자기장 구현, 아이템 구현
  2. 서버 개발 : 플레이어 전투 및 자기장 동기화 구현
  3. CI/CD 개발 : Jenkins를 이용한 Auto Deploy 셋업
  4. AI 개발 : 딥러닝 활용 적 AI 구현
  5. 주도적으로 새로운 아이디어, 기술 적용 및 의견을 제시!

* 깃허브 링크 : https://github.com/dkssudgo112/project_m

* 개발 계획서 링크 : https://yodastudy.tistory.com/11

* 영상 : https://yodastudy.tistory.com/14

 

* 어려웠던 AI 구현과 이를 해결했던 과정 + 새로운 아이디어를 적용하기 위해 협업 팀원들을 설득했던 과정

더보기

 4명의 팀으로 멀티 게임을 만들었던 경험 속에서 충돌이 있었던 적이 있습니다. 프로그램 내에서 몬스터 AI 구현을 위해, 전공 경험을 바탕으로 오픈소스 딥러닝 프레임워크 모델을 적용하자는 아이디어를 낸 적이 있습니다. 대부분 팀원이 어려워하고. 간편한 트리 모델을 선호했지만 평소에 다른 팀원들의 의견에 대해 한번 수용하면 헌신하는 자세를 먼저 보임으로써 팀원들에게도 적극적인 협업을 유도할 수 있었습니다.  또한, 적극적으로 프로토타입 모델 구현 및 설명, 가이드 문서 작성을 통해 이해를 도왔습니다.

 

 처음에는 원하는 만큼의 모델 결과물을  얻는데, 매우 어려웠습니다. 적 AI가 방 안의 문을 찾지 못하여 갇히거나, 자기장의 타이밍을 맞추지 못하여 가만히 있어도 유저가 1등을 하는 나약한 적들이 만들어 졌습니다. 하지만, 새로운 기술 적용에 책임을 가지고  다양한 Example을 정확히 이해하고, 이를 통해 Hyperparameter를 계속 바꿔 보는 등 매달린 끝에 학습에 성공했습니다.

 

  만족스러운 결과물을 보며 뿌듯함을 느꼈고, 다양한 지식을 거리낌 없이 습득하는 사람으로 더 성장했습니다.

 

 

 


백엔드 서버 개발 (Project GSA) 경험

☁️ ASP.NET 웹 서버 기반의 방치형 모바일 게임 개발

 

* 기술 스택 : ASP.NET Core 7.0 , Entity Framework, MySQL, Unity, Perforce, Python, Firebase, AWS ec2 + codedeploy + cloudwatch + rds + elasticache + elb + cloudfront + SNS + lambda, JSON, CSV, Message Pack, Snowflake, Fluentd + Fluentbit, Consul, Slack, Xcode, Cocoapods, MQTT, REST

* 기간 : 2023.01 ~ 2024.02 (13개월)

* 나의 역할 :

  1. 서버 개발, DB 설계 : Gacha, Billing 로직 개발, DB 설계
  2. 서버 성능 개선 : Python Locust를 통한 스트레스 테스트,  Sharding을 통한 부하 개선, .Net 메모리 프로파일링을 통한 성능 개선
  3. 인프라 개발 : AWS 서버 아키텍쳐 설계, 무점검 배포 아키텍처 설계, cw 알림 시스템 개발
  4. CI/CD 개발, 사내 툴 개발 : Teamcity 기반의 CI 시스템 개발,  Slack 알림, Perforce 및 Webhook Trigger 등 기타 사내 업무 자동화을 위한 Python Tool 개발, GCP API를 통한 CD 자동화 시스템 개발
  5. 빌드 관리 : AOS / IOS 빌드, 라이브러리 충돌 관리
  6. SDK 관리 : Firebase, Facebook, 보안, 광고, 테스트, MMP 관련 SDK 설치 및 관리, 가이드
  7. 로그 데이터 축적, 분석 시스템 개발 : 로그 카테고리 설계, MMP + 클라이언트 + 서버 로그 통합을 통한 데이터 파이프라인 기초 작업, AWS athena를 이용한 조회 시스템, AWS Glue(Spark)를 통한 로그 분석 시스템 개발 

* 링크 : https://play.google.com/store/apps/details?id=com.hybrid.UnlimitedKnightsAlpha&hl=en_GB&gl=US&pli=1

 

 

 

* 메모리 리크가 발생했던 경험

- 어려운 과제를 극복한 과정

더보기

 알파 테스트 단계에서 겪은 서버 문제는 저에게 큰 시험대였습니다. ASP.NET과 AWS를 사용하여 구축한 서비스는  서버 인스턴스가 메모리로 인해 정지되는 상황에 직면했습니다. 


 먼저 문제의 원인을 파악하기 위해 dotnet dump 도구를 사용하여 메모리 덤프를 분석하기 시작했습니다. 이 분석을 통해, 서비스의 메모리 리크 문제를 식별할 수 있었습니다. 원인을 파악한 후, 저는 두 가지 주요 목표를 세웠습니다. 첫 번째는 메모리 리크를 해결하여 시스템의 안정성을 확보하는 것이었고, 두 번째는 유사한 문제가 재발하는 것을 방지하기 위한 사전 알림 시스템을 구축하는 것이었습니다. 메모리 리크 문제를 해결하기 위해 API를 Python Locust를 통해 전수 검사했고, 메모리 측정과 로그를 통한 단계적 분석을 실시 했습니다. 이를 통해 Auth 부분에서 DB Connection 해제에 문제가 있어 User Data가 축적됨을 발견하고 해결했습니다.

 또한, AWS CloudWatch(CW)와 Simple Notification Service(SNS)를 활용하여 메모리 부하 사전 알림 시스템을 자체적으로 구상하고 개발했습니다. 이 시스템은 서버의 메모리 사용량이 임계값에 도달하면 개발팀에 즉시 알림을 보내는 역할을 합니다. 이를 통해, 팀은 실시간으로 시스템의 상태를 모니터링하고, 필요한 조치를 즉시 취할 수 있게 되었습니다.

 

 

 

* 목표했던 테스트 부하에 미치지 못해 개선을 위해 노력했던 경험

- 대규모 트래픽 환경에서 성능 최적화를 위해 노력한 과정

더보기

 Python Locust로 스트레스 테스트를 진행하며 목표했던 CCU 1000명에 도달하지 못했습니다. 이에 따라, 저는 API별 유닛 테스트를 실시하여 문제의 원인을 분석했고, DB 처리 속도와 커넥션 풀의 한계를 확인했습니다. 특히 플레이어 데이터 조회에서 병목 현상이 두드러졌습니다. 이 과정에서, 해결책을 찾기 위해 다른 회사의 공개된 기술 문서와 기술 블로그를 광범위하게 검토했습니다. 이러한 연구를 통해, 데이터베이스 샤딩 ID를 적용하는 아이디어를 도출했습니다. 다양한 사례와 경험을 분석함으로써, 저는 우리 시스템에 최적화된 샤딩 전략을 구상할 수 있었고, 이를 통해 시스템의 성능을 현저히 개선하는 성과를 달성했습니다.

 

 

 

* Sylvan 라이브러리 도입과 그 과정에서 배운 교훈

 - 꼼꼼한 라이브러리 내부 코드 검토 습관

더보기

 데이터를 저장하고 읽는 방법으로 Joel Verhagen의 “The fastest CSV parser in .NET”를 참고하여 Sylvan이라는 라이브러리를 사용했습니다. 이는 일반적으로 사용되지 않는 라이브러리였지만, 성능이 좋다는 생각에 과감하게 사용했습니다. 그러나, 이 때문에 많은 어려움이 생겼습니다. AOT 컴파일 문제, 라이브러리 내 많은 리플랙션 코드의 사용으로 바인딩 플래그를 직접 수정하는 등 많은 라이브러리 개조를 해야 했습니다. 문제가 발생하고 원인을 찾기 위해 디버깅하는 과정도 까다로웠습니다. 하지만 이를 해결한 이후에는 라이브러리를 적용하기 전 먼저 내부 코드를 검토하고 짜임새를 파악하는 좋은 습관이 생겼습니다.

 

 

 

* CD 자동화 시스템 구축

 - 스스로 업무 자동화에 대해 고민했던 경험

더보기

 Perforce Trigger와 Webhook을 이용한 Teamcity CI 시스템 개발 업무를 수행하면서, 동료들이 빌드 결과물을 패키징하고 업로드하는 과정을 수동으로 처리하는 것을 목격했습니다. 이러한 비효율적인 작업 과정을 개선하고자, 저는 Google API와 Xcode를 활용한 CD(Continuous Deployment) 자동화 시스템을 스스로 제안하고 구축했습니다. 이를 통해 빌드와 배포 과정의 자동화를 실현하여 팀의 작업 효율성을 크게 향상시켰습니다. 별개로, 서버 배포 과정에서 발생할 수 있는 인적 오류를 최소화하고 안정적인 운영을 보장하기 위해 AWS CodeDeploy 도입도 제안하고 구현했습니다. 이러한 노력은 프로젝트의 전반적인 배포 프로세스를 혁신적으로 개선하는 결과를 가져왔습니다.

 

 

 

 

* 빌링 로직 개발을 하면서, 설계 단계에서 오류를 꼼꼼히 체크했던 경험 

 - 문제를 정의하고 개선하거나 해결해보고 개발된 이후에 개선을 위해 고민해본 과정

더보기

 빌링 서버 로직 개발 과정에서, 저는 초기 설계 단계부터 다양한 오류 가능성을 꼼꼼하게 체크하는 작업에 주력했습니다. 빌링 시스템에 대한 연구를 통해 발견된 여러 오류 상황을 기반으로, 저는 다른 빌링 시스템의 구현 방식을 분석했습니다. 이 과정에서 상태(state) 관리를 이용해 오류 발생 시 자동으로 시스템을 복원할 수 있는 설계를 구상하고 실현했습니다. 개발 완료 후에는, 실제 사용 사례를 바탕으로 한 다양한 시나리오를 통해 시스템을 직접 QA 및 테스트했습니다. 이를 통해 발견된 미비점을 지속적으로 보완함으로써, 빌링 시스템의 안정성과 신뢰성을 대폭 향상시킬 수 있었습니다.

 

 

 

 

 

 

 

 

 


사내 Auth 통합 과제 해결

* 기술 스택 : Python, ASP.NET, Perforce, Gitlab, SVN, LDAP, AD, Google API, NAS, Jenkins

* 기간 : 2023.01 ~ 2024.02 (13개월)

* 나의 역할 : 과제 설계 + 개발 100%

 

* 재직회사에서 처음 맡았던 문제 해결

 - 문제를 정의하고 개선하거나 해결해보고 개발된 이후에 개선을 위해 고민해본 과정

더보기

 재직 회사에서. 사내 그룹웨어, 구글 WS, AD, OpenLDAP로 나누어져 있는 Auth를 통합하는 과제에서 시스템 설계 경험을 했습니다. 프론트와 DB서버 간의 적절한 API 설계, 구글 API를 활용, 그리고 로그인하는 Perforce, Gitlab, Jenkins에서의 Adapter까지 모든 부분을 스스로 설계하고 개발했습니다. 꾸준히 사용성을 피드백 받고, 버그 등을 테스트하면서 현재는 전사에 적용되었습니다. 이 과정에서 어려웠던 건 Perforce의 어댑터 부분이었습니다. 한정적인 라이선스의 문제로 User ID를 Perforce User로 그대로 사용할 수 없었습니다. 사용자에게도 추가적인 설치나 입력을 요구하면 불편함이 따르기에 아이디어가 필요했습니다. 고민 끝에, 구글 Docs에서 PM 분들이 관리하는 매핑 테이블을 만들고 DB와 연동하여 p4 트리거를 통해 인증하는 구조를 만들었습니다.

 

 

 

 


기타 경험

  • 슬랙 봇 개발: 🤖 사내 점심 메뉴 결정을 돕는 슬랙 봇 개발. ChatGPT API 사용하여 메뉴 추천, 투표, 위치 기능 제공.
  • MRI,CT 등 환자데이터 3D 포팅 기술을 주제로 졸업연구 진행

 

  • 독서 기록 웹 서비스 : 📚 OCR 기술을 활용한 독서 기록 웹 서비스 개발 (나의 역할 : 백엔드) 
    • 버그를 고치기 위해 노력했던 과정
더보기

소개 : https://yodastudy.tistory.com/9
깃허브 링크 : https://github.com/dkssudgo112/project_book

 

 대학 시절 네트워크 프로그래밍 수업의 조별 프로젝트로, OCR 기술을 활용한 독서 기록 웹 서비스 개발에 참여했습니다. 이 프로젝트는 사용자가 책의 페이지를 촬영하면 자동으로 북마크를 생성하고, 간단한 메모를 날짜별로 저장해주는 기능을 목표로 했습니다. 프로젝트를 진행하며, Docker와 Kubernetes를 통해 서비스의 안정적인 운영을 보장하고, gRPC와 REST API를 활용해 서비스 간 및 사용자와의 통신을 최적화했습니다. 특히, 발표 전날 클라이언트에서 서버로의 데이터 전송에 문제가 발생하는 큰 버그를 경험했습니다. 문제 해결 과정에서 Kubernetes 볼륨 설정 누락의 원인을 발견하고, 기술적 문서를 꼼꼼히 검토하는 중요성을 깨달았습니다. 이 경험은 저에게 새로운 기술을 적용할 때 원리를 이해하는 습관의 중요성을 일깨워주었습니다.

 

 

  • 대학교에서 가장 어려웠지만 재미있게 들었던 수업 
    • 컴퓨터 아키텍처, "파이프라인 CPU 설계 경험"을 통해 어려운 문제를 극복했던 사례
더보기

깃허브 링크 : https://github.com/dkssudgo112/cpu_verilog
 
 파이프라인 CPU 설계 과정에서 코드를 짜는 작업은 꽤나 도전적이었습니다. 각 단계의 정확한 동기화와 명령어 사이의 의존성을 관리하는 것이 주요 어려움 중 하나였습니다. 특히, 파이프라인에서 발생할 수 있는 데이터 헤저드, 컨트롤 헤저드 등의 문제를 해결하기 위해 세심한 로직 설계가 필요했습니다. 이러한 문제들을 해결하기 위해 많은 시간을 할애하며, 심지어 밤을 새우면서도 일주일 가량 코드 작성에 몰두했습니다. 정교한 파이프라이닝 로직을 구현하는 과정에서 Verilog의 복잡성과 함께, 코드의 미세한 오류 하나가 전체 시스템의 성능을 크게 저하시킬 수 있음을 깨닫게 되었습니다. 이러한 경험은 코드의 효율성과 정확성을 극대화하는 중요성을 깊이 이해하는 계기가 되었습니다.
 

 

 

  • 클래식기타 동아리 / 학과 학생회 활동
    •  적극적인 소통과 팀워크를 위한 노력으로 좋은 결과를 얻었던 사례 
더보기

 대학교 동아리 임원진 활동을 하면서, 적극적으로 불만 또는 의견을 수용하고 소통하는 과정에서 좋은 평가를 받았습니다. 저는 동아리 활동을 하며 다른 사람들이 편하게 즐길 수 있게 돕고, 불편함을 적극적으로 해소하고 싶었습니다. 이전에 없었던 더치페이 시스템, 멘토 시스템을 적극적인 의견 수렴을 통해 추진하고 개선했으며, 후배들에게 장기 자랑을 시키는 등 좋지 않은 관례는 선제적으로 폐지했습니다. 물총 놀이 등 새로운 아이디어를 통해 행사를 기획하기도 했습니다. 동아리의 불편함을 찾는 과정에서 처음에는 다들 어렵고 소극적이었지만, 적극적인 소통과 저의 자세가 좋은 영향이 되어 많은 개선을 시도할 수 있었다고 생각합니다.

 

 

  • 블로그 활동
더보기
기술 기록 블로그 : https://yodastudy.tistory.com/

생각/의견 블로그 : https://blog.naver.com/dkssudgo112


 블로그에 기록하는 활동을 좋아하여, 개발 블로그를 작성하고 있습니다. 공부했던 기록과 함께, 업무를 하면서 Problem Taking을 했던 기록도 남기고 있습니다. 여담으로, Web3 에도 관심이 많아 생태계를 팔로잉하고자 운영하는 네이버 블로그(요다다요)도 있습니다.

 

 

 

 

 

 

 


 

  • 🎓 학력 및 자격증
    • 학력: 🏫 KAIST 전기 및 전자 공학부 졸업 (2021년도에 수학과에서 전공 변경)
    • 영어 성적:
      • 📜 TOEIC 835 (2022.05.15)
      • 📜 OPic IM2 (2023.04.08)

 

 

 

 

 


 

 

  • 🔄 성장과 노력을 위한 나의 자세
    • 했던 공부와 업무를 기록하고, 복기합니다.
    • 솔루션에 관한 다양한 방안을 분석하고 공부합니다. 다양한 기술 블로그 팔로잉과 라이브러리를 찾아보며 다양한 해결방법을 모색합니다.
    • 주제에 대해 몰입합니다. 항상 업무 토픽과 기술에 관한 책을 구입하여 기술 커버리지를 넓힙니다.
    • 해결하기 어려운 문제에 부딪히면, 적극적으로 도움을 요청합니다. 질문을 하는 것도, 남들에게 도움을 주는 것도 좋아합니다.
    • 꼼꼼하게 내부 코드를 읽으려고 노력하고, 좋은 코드 습관을 배우려고 합니다.

 

 

 

 

 

 

 


 

 

세상을 바라보는 나의 시각

* 내 생각/의견을 정리하는 블로그 : https://blog.naver.com/dkssudgo112/222649439044

 

P2E 게임 단순 선점효과인가?

* P2E 게임은 단순 선점 효과인가? * P2E 때문에 게임이 더 재밌어 지는가? 또는 게임이 재밌는게 본질...

blog.naver.com

 

 

* AI 규제와 윤리에 대한 나의 생각: 공동 데이터 분산 네트워크를 통한 새로운 패러다임

더보기

최근 LLM 서비스가 대중들에게 알려지면서, 동시에 AI 규제의 목소리도 커지고 있습니다. 기업에서도 ChatGPT의 정보 유출에 우려하여, 자체 서비스를 제작하거나 신뢰할 수 있는 국내 기업으로 대체하는 사례도 있습니다. LLM 뿐 아니라 플랫폼, 비서, 영상 및 이미지 등 다양한 AI 서비스들이 개발 및 확장되는 가운데, Super AI에 관한 염려도 있습니다. 세계는 이에 따라 국제기구에서 법을 제정하거나, 에이전시를 구성하는 등의 조처를 하고 있습니다.

저는 AI 규제가 두 가지 방향으로 이루어져야 한다고 생각합니다. 첫째는 AI 서비스의 결과물이 편향적이지 않고 윤리적이어야 합니다. 학습된 AI의 파인 튜닝을 통해 범죄나 차별 행위에 악용되는 것을 막을 수 있습니다. 국내에서도 상반되는 사례가 있습니다. ‘이루다’는 사용자의 비정상적인 악용을 막지 않아 사회적으로 문제가 되어 서비스를 닫고 개선을 했었습니다. 반면에 ‘CLOVA X’는 출시 때부터 필터를 통해 이러한 행위를 방지했습니다. 이러한 차이점은 규제의 기틀이 마련되어 있었다면 충분히 방지할 수 있었을 것을 시사합니다.

둘째는, 원천 데이터에 대한 저작권 및 개인 정보 보호는 엄격해야 합니다. AI 학습은 사용자 데이터가 풍부한 플랫폼 기업이 유리하고, 독점할 수 있는 경향이 있습니다. 그렇다고 데이터를 공유하기에는 저작권과 정보 보호에 위반될 소지가 큽니다. 이는 학습 데이터뿐 아니라 사용자가 입력한 서비스 데이터에도 포함됩니다. 이를 동시에 해결할 아이디어로 규제와 함께 분산 네트워크를 통한 데이터 플랫폼 구축을 제시할 수 있습니다. 중앙 서버가 아니므로 암호화된 개인 정보는 네트워크 전체의 동의 없이 접근할 수 없고, 학습을 위한 데이터는 거버넌스에 의해 공동 관리 됩니다. 접근성과 보안성을 둘 다 가지고 있습니다.

결론적으로, AI 규제는 윤리적인 결과물을 만들고 정보를 보호하는 방향으로 이루어져야 한다고 생각합니다. 또한, 이를 해결하기 위한 공동 데이터 분산 네트워크를 구상하고 있습니다.