La foret rouge

About

avatar

Shin Juyong

데이터를 다루고 설명하는 개발자, 신주용입니다.

데이터 분석을 자동화하여 수 시간이 아닌 10여 분이면 볼 수 있도록 개선하여 효율적으로 일한 경험이 있습니다. 또한, 이상 상황 발생 시 모니터링하던 로그와 메트릭 데이터를 동료들과 공유하고 패치를 적용하여 시스템을 더욱 안정적으로 만드는 데도 기여했습니다.

최근에는 프로젝트에서 팀장을 맡아 팀원들과 주기적인 회고, 코드 리뷰 규칙 도입 등을 통해 개발 과정에서 같이 고민하고 협업하는 분위기를 이끌었으며, 최우수 프로젝트로 선정되기도 했습니다.

제가 겪은 문제와 해결 방법이 다른 개발자에게도 도움이 될 수 있도록 블로그에 기록하는 것을 좋아합니다.

Skills

BackendJava, Spring, Python, Go
FrontendJavaScript, React, HTML/CSS
DatabaseMySQL, MariaDB, PostgreSQL
InfrastructureLinux, Git, Docker/Docker Compose, Prometheus/Grafana
ToolNotion, Slack, Mattermost, Jira, Figma

Experiences

삼성 청년 SW 아카데미(SSAFY) 10기

preview: 당신의 AI 면접 파트너

팀장, BE, AI
(6인 팀프로젝트)
2024.02.19. - 2024.04.05. (7주)
Python, FastAPI, Jupyter, PyTorch, FFmpeg
  • 이력서 기반 면접 질문을 생성·제공하고 답변 영상을 AI로 분석하여 피드백을 제공함으로써 취업 준비생들의 면접 준비에 도움을 주는 서비스.
  • AI 활용 영상 분석 파이프라인 구현.
    • 전이 학습으로 ResNet 기반 이미지 처리 모델을 학습해 감정 분류, KoBERT 기반 문장 처리 모델을 학습해 답변 의도 분류.
  • 이미지 처리 모델 정확도가 최초 0.8% 수준으로 매우 낮게 나왔으나, 이유에 대해 가설 수립, 재학습, 검증하며 84% 수준으로 올려 프로덕션 환경에 사용.
  • 영상 녹화 테스트 중 사용자 환경에 따라 영상 코덱이 달라 처리 중 문제 발생.
    • 시간이 조금 더 소요되더라도 코덱, 크기 등을 통일하는 것이 안정적이라 판단하여 인코딩 과정을 추가해 문제 해결.
  • 팀원들에게 AI 분석 과정과 시스템 아키텍처를 설명하면서 타인이 이해하기 쉽게 설명하는 것이 쉽지 않다는 것을 또 느꼈고, 내용을 정리해서 설명하면서 지식을 공유하는 것이 스스로에게도 도움이 된다는 것을 느낌.
  • 최우수 특화 PJT 선정!

DEVoca: 개발자를 위한 단어장

팀장, Infrastructures
(6인 팀프로젝트)
2024.01.03. - 2024.02.16. (7주)
AWS EC2, Jenkins, Docker, Docker Compose
  • 개발 용어(단어)와 설명을 피드에 올리고, 다른 사용자의 단어 설명을 통해 새로운 단어를 학습, 저장할 수 있는 SNS.
  • CI/CD 파이프라인 구축, Docker 컨테이너 기반 서버 배포.
  • 자동 배포 파이프라인을 통해 약 2주의 개발 기간 동안 450회(일 평균 약 28회)의 빌드가 자동으로 실행.
    • 빌드에 필요한 인적, 시간적 비용을 줄일 수 있었고, 짧은 배포 주기 덕분에 빌드 실패 시 원인을 빠르게 찾아 수정할 수 있었음.
  • 모니터링을 통해 파이프라인 문제를 파악하고 수정.
    • 서버 빌드 성공 알림을 받았으나 실제로는 실행되지 않는 문제 발생.
    • Grafana에서 CPU 사용율이 주기적으로 급증하는 것과, 컨테이너 restart 로그가 주기적으로 출력된 것을 확인함.
    • Jenkins 빌드 스크립트를 수정하여 동일한 문제의 재발을 방지.
  • 조직을 운영하는 데는 시스템이 필요하다는 것을 느낌.
    • 코드 리뷰에 뱅크샐러드 ‘Pn 규칙’을 도입, 매 주 금요일에는 KPT 회고를 도입하여 팀원들 간 소통에 가이드 라인을 제공.

Personal

오픈소스 기여: Scavenger

Contributor2023.04. (2주)
Kotlin, Vue.js
  • Scavenger는 네이버에서 개발한 Java 프로젝트 Dead Code 탐지 툴.
  • 웹 상에서 테이블로 출력되는 데이터를 TSV 파일로 내보내기 기능 구현.
    • DB에서 데이터를 직접 뽑아 쓸 수 있지만, 웹에서 ‘내보내기’ 버튼으로 다운로드 받는 것이 더 직관적이라고 생각했고, 필요한 다른 사람이 있을 것이라 생각하여 구현함.
  • Scavenger 개발 팀과 댓글로 질문하고 소통하며 기능 완성.
    • Scavenger 개발팀이 아닌 외부인으로서 오픈소스에 기여했기 때문에 다른 파일을 최대한 참고해 코드 스타일을 맞췄으나 팀의 컨벤션과 조금씩 다른 점이 존재. 이런 부분은 코드 리뷰를 통해 맞춰 나가는 경험을 할 수 있었음.

Kyungpook National University

센서 배경 잡음 데이터 분석

Data Analyst2021.05. -
2022.08. (1년 3개월)
Python, Jupyter, Linux
  • 5천여 대의 센서 데이터 실시간 수집, 분석하는 분산 시스템.
  • 센서 배경 잡음 데이터 분석.
    • 결과 해석에 시간별 변화, 기상 현상 등 성능에 영향을 미치는 요소 고려.
  • 분석 프로세스 자동화, 스케줄러를 통한 주기적 실행 구성.
    • 빠른 분석을 위해 멀티 프로세스 기반 병렬 실행 스크립트 작성, 활용하여 분석 시간 단축.
    • 성능 분석 프로세스를 주기적으로 실행되도록 자동화하여 효율적으로 일할 수 있었고, 주기적으로 수집된 데이터로 긴 기간에 대한 시계열 분석도 가능해짐.
  • 수치 데이터를 직관적으로 이해하기 쉽도록 시각화하는 데 고민하며 단순한 꺾은선 그래프 뿐만 아니라 막대 그래프, 지도 등을 다양하게 활용.

데이터 분석, 알림 자동화

DevOps2021.09.
Python, Linux
  • 위 시스템에서 지진 발생 시 데이터 다운로드 → 분석 → 알림 자동화.
  • 이벤트 발생 10여 분이면 분석 결과를 메신저로 받아볼 수 있도록 개선.
    • 기존에는 이벤트 발생 소식을 듣고 수동으로 분석을 진행했기 때문에 분석 결과를 받기까지 수 시간까지도 소요되었으나, 이를 대폭 개선함.
  • Python은 GIL 때문에 멀티 스레딩을 통한 성능 향상에 한계가 있음을 알게 되었고, 멀티 프로세스를 활용해 병렬적으로 분석하여 소요시간을 단축.

모니터링 시스템 구축

DevOps2021.05. -
2022.08. (1년 3개월)
Prometheus, Grafana, Linux
  • 개발 중이던 분산 시스템을 대상으로 메트릭 수집, 기록, 분석, 알림 자동화를 위해 Prometheus 기반 모니터링을 구축.
  • 세부적인 데이터 수집과 기록, 분석과 알림 자동화를 위해 Prometheus 기반 모니터링 시스템 구축.
  • 30여 개의 컨테이너를 대상으로 모니터링.
    • Gateway와 같은 앞 단의 서버에서 문제가 발생할 때 다른 서버, DB 메트릭도 안정적이지 않은 패턴을 보이는 것을 모니터링을 통해 확인. 이 경우 메신저로 알림을 보내도록 룰 추가하여 문제의 발생을 빠르게 인지할 수 있었음.
    • 새 컨테이너 배포 테스트 중 메모리 누수 문제를 확인. 동료와 논의 후 패치를 적용해 프로덕션 문제로 이어지지 않도록 예방.
  • 이전에는 문제가 발생하더라도 즉시 인지할 수 없었고, 발생 당시의 기록을 알 수 없었으나, 모니터링 구축을 통해 동료들과 문제 상황에 대해 이해하고 공유하는 것을 도움.

Certifications

2023.12.15.제 51회 SQL 개발자(SQLD)
2023.08.25.HSAT(Hyundai Software Aptitude Test) 7차 Softeer 정기 역량 진단 Level 3
2022.09.03.ACTFL OPIc(영어) Intermediate High

Education

2023.07. - Present삼성 청년 SW 아카데미(SSAFY) 10기
2021.03. - 2023.02.경북대학교 대학원 컴퓨터학부 석사 수료
2014.03. - 2021.02.경북대학교 IT대학 컴퓨터학부 학사 졸업
2011.03. - 2014.02.구미고등학교 졸업

About ‘La foret rouge’

프랑스어로 ‘La foret rouge’는 붉은 숲(The red forest)이라는 뜻입니다.

인간의 눈은 적외선을 볼 수 없지만 카메라의 센서는 근적외선 영역까지 촬영이 가능합니다. 때문에 카메라로 가시광선 영역은 막고 적외선만 촬영을 하면 우리가 평소에 보던 것과는 다른 세상을 볼 수 있습니다.

저 또한 저만의 독특한 시각을 가지고 싶은 바람을 담아 블로그 이름을 지었습니다.

la foret rouge: ir image