미리보기
기본 정보

다양한 분야의 사람들과 소통하는데 적극적이고, 기술적인 부분과 비즈니스적인 부분 모두를 고려하여 개발하는 소프트웨어 엔지니어 선민재입니다.
자기소개
안녕하세요! 👋 개인의 성장은 물론 함께하는 모두의 성장을 위해 노력하는 소프트웨어 엔지니어 선민재입니다!
현재 소프트스퀘어드의 IT 작업자 매칭 플랫폼 'Gridge'의 Technical Lead을 맡고 있습니다.
이전에는 개발 부트캠프 강사 및 IT 커뮤니티 운영 경험이 존재해 개발 분야는 물론 다양한 분야의 사람들과 소통하는데 익숙합니다.
사소한 기능을 개발하더라도 기술적인 문제 뿐만 아니라 현재 비즈니스 부분에서 발생할 수 있는 임팩트를 고려하는 것에 집중하고, 이에 대해서 사내 다양한 구성원과 적극적으로 소통합니다.
백엔드 위주로 업무를 진행하고 있지만, 업무에서는 필요한 경우 프론트엔드 (웹/앱)에 대하여 직접 수정하고 프로덕션에 배포해본 경험도 가지고 있으며 사이드 프로젝트에서 Flutter 개발을 담당하기도 하였습니다.
기술 스택
Java, TypeScript, Spring Boot, spring-jpa, HTML/CSS, React, python3, Flutter, MySQL, AWS, Kotlin
경력
주식회사 소프트스퀘어드
Technical Lead | 프로덕트 팀 | 재직 중
2022.10. ~ 재직 중 (2년 8개월)
(현) Technical Lead
IT 프로젝트 인재 매칭/개발/관리 플랫폼 'Gridge' 시스템 개발 리드
Spring Boot / Java API 서버 신규 기능 개발 및 유지보수
Sentry 도입을 통한 오류 리포팅 시스템 도입
Nest.js / TypeScript API 서버 유지보수 진행
내부 백오피스 웹 (React / TypeScript) 유지보수 및 신규 기능 개발
외주 프로젝트의 개발 환경 구축 및 기획, 검토, 작업자 선발 등 기술 관련 리드
외주 프로젝트 웹/앱 개발 설계, 유지보수 진행
전자 서명 관련 전체 플로우 초기 설계 (계약 생성 및 메일/알림톡 전송, 서명 내용 PDF화 등)
교육 애플리케이션 유지보수 개발 리드
기업 문서 관리 웹페이지 개발 리드
AWS CloudFormation을 활용한 인프라 구축
AWS EC2, RDS, S3, CloudFront, CodePipeline, ElastiCache 등 AWS 인프라를 CloudFormation을 사용하여 구성 진행
VPC를 활용한 내/외부 네트워크망 분리
사내 개발 챕터 참여를 통한 백엔드 프로젝트 개발 환경 개선
기존 자체 구성 인증 모듈을 Spring Security 기반으로 전환
Spring Security에서 지원하지 않는 국내 주요 사용 OAuth2 로그인 (카카오, 네이버, Apple) 사전 구현을 통해 관련 로직 개발 공수 50% 이상 감소
외주 프로젝트 진행 시 기존 대비 로그인/회원가입 기능 개발 공수를 80% 이상 감소
Docker 기반 AWS CloudWatch 로깅 시스템 적용
로깅 확인을 위해서 기존에는 EC2에 접속하여 Docker 로그를 확인하여야 했으나, 사내 개발챕터 내 협업을 통하여 Docker의 awslogs 로깅 드라이버 설정을 통해 AWS CloudWatch에서 로깅을 확인할 수 있도록 개선해 기존 대비 유지보수 효율성 80% 이상 증가
사내 기술 이슈 검토 및 해결
사내 개발 관련 이슈 협업 요청을 통해 즉시 대응이 필요한 급건에 대하여 대응
(전) 교육/커뮤니티 팀 Education / Community Manager
교육/커뮤니티 관련 개발 시스템 구축/유지보수 및 운영
AI 개발 질문 봇 'CodePicker' 개발 및 유지보수
개발자 역량 검증 테스트 'Gridge Test' 시스템 개발 및 유지보수
교육/커뮤니티 관련 랜딩 페이지 유지보수
외부 교육 프로그램 강의 및 기획/운영
자체 부트캠프 라이징 캠프 강의 및 운영, 커리큘럼 개선
대한상공회의소, SK플래닛 T아카데미, 소프트스퀘어드 K-Digital Training (KDT) ASAC 웹풀스택 운영, 커리큘럼 개선
자체 커뮤니티 NE(O)RDINARY 관련 내/외부 프로그램 기획 및 운영
NE(O)RDINARY Hackathon 기획 및 운영
수익형 앱 런칭 동아리 CMC (Central MakeUs Challenge) 운영 지원
전국 대학교 연합 프로젝트 동아리 UMC (University MakeUs Challenge) 운영 지원
2023 NE(O)RDINARY DEMODAY 기획/운영 참여
인하대학교 창업지원단 개발자 매칭 프로그램 (나랑 팀 해 듀오, 대학원생 팀빌딩 경진대회) 개발자 매칭 부문 기획 및 운영 참여
주식회사 소프트스퀘어드
Part-Time Education Manager
2022.07. ~ 2022.10. (4개월)
라이징 프로그래머 with 영등포 SeSAC 4기 트레이너
Android 과정 / Server (Spring Boot, Node.js) 과정 담당
6주 간 약 20명의 교육생 집중 트레이닝 및 2주 클론코딩 테스트 과정 멘토링
교육 종료 후 교육생으로 구성 된 앱 런칭 프로젝트 총괄 멘토링
라이징 캠프 트레이너
Android 과정 / Server (Spring Boot, Node.js) 과정 담당
3기수 활동, 6주 간 교육생 집중 트레이닝 및 2주 클론코딩 테스트 과정 멘토링
전국 대학교 연합 동아리 University MakeUs Challenge (UMC) 3기 트레이너
Android 과정 담당
약 200명 이상의 동아리원 대상으로 10주간 강의 진행
프로젝트
IT 프로젝트 인재 매칭/개발/관리 플랫폼 'Gridge'
주식회사 소프트스퀘어드
2023.10. ~ 진행 중
IT 프로젝트 인재 매칭/개발/관리 플랫폼 'Gridge' 시스템 개발 리드
레거시 시스템 전체 재설계 (Gridge 차세대 프로젝트)
각 부서 별로 필요한 기능들을 별도 개발하는 방식으로 진행해 개발 효율성 저하, 데이터 추출 불가 등의 이슈를 겪고 있었습니다.
기존 고객사, 작업자, 백오피스 API 서버의 경우 같은 DB를 사용하고 있고, 공통 로직을 사용해야 하는 부분들이 존재함에도 불구하고 모듈화 등이 되어있지 않아 신규 비즈니스 요구사항에 맞는 개발을 진행하는 데 많은 시간이 소요되었습니다.
기존 웹 페이지의 경우 디자인 시스템이 명확하게 구축되지 않아 매번 컴포넌트들을 새로 만들어야 하는 이슈가 존재하였습니다.
이러한 문제점을 해결하기 위하여 전체 재설계를 주도하였습니다.
기존에 데이터가 없거나 더 이상 사용되지 않는 불필요한 테이블을 전부 제거하였으며 신규 비즈니스 요구사항에 맞도록 스키마 구조를 재설계하였습니다.
기존 데이터베이스에서 데이터를 모두 파기하지 않고 최대한 비즈니스적으로 유의미한 데이터들은 마이그레이션하여 사용하는 부분도 고려하였습니다.
현재 비즈니스 상황 대비 미래에 요구사항이 추가될 것이 예상되는 부분들은 유연하게 수정할 수 있도록 설계하였습니다.
API 서버의 경우 기존 Nest.js 기반의 서버는 파편화된 구조와 관련 프레임워크 개발 경험자 퇴사로 인하여 지속적인 유지보수가 어렵다고 판단하여, Spring Boot 멀티모듈 기반의 신규 프로젝트로 재작성하였습니다.
자체 작성한 인증/인가 시스템을 Spring Security로 변경하고 관련 부분들을 모듈화하여 높은 유연성 및 유지보수성을 가질 수 있도록 개발하였습니다.
변경 이력 추적을 위하여 Spring Data Envers를 도입하여 변경 이력 조회가 필요한 부분들을 백오피스에서 조회할 수 있도록 하고, 이를 이용해 변경을 다시 롤백할 수 있는 기능을 개발하였습니다.
이를 통하여 Google 스프레드시트와 프로덕트를 함께 사용하여 파편화된 전사 프로세스의 90% 이상을 프로덕트로 이전시켰습니다.
Spring Boot / Java API 서버 신규 기능 개발 및 유지보수
MySQL 기반의 DB 활용을 위한 Spring Data JPA, QueryDSL 사용
API 스펙 문서 작성을 빠르게 진행하고, 프론트엔드 개발자에게 Swagger UI로 공유할 수 있도록 SpringDoc-OpenAPI 라이브러리 활용
기본 회원 인증 및 개별 동작하는 3개의 페이지 별 권한 관리를 위해 Spring Security 활용
데이터 생성/수정/삭제 내역 관리를 위한 Hibernate Envers 기반 Spring Data Envers 도입 및 활용
리포팅 시스템 개발
단일 애플리케이션에서 Gradle 멀티모듈 환경으로 전환
기존 Nest.js 애플리케이션에서 페이지 별 API 애플리케이션이 별도 구현되어 있어 중복으로 재구현해야 하는 부분을 제거하여 기존 대비 데이터베이스 엔티티 및 공통 로직 활용 가능하도록 변경되어 기존 대비 개발 효율성 3배 이상 개선
Sentry 도입을 통한 오류 리포팅 시스템 도입
기존의 경우 API 서버는 CloudWatch 기반의 단순 오류 알림, 웹은 오류 리포팅 시스템이 존재하지 않았으나 Sentry 도입을 통하여 웹/API 서버 모두 에러 발생 시 즉시 Slack 알림을 받고 어떤 에러인지 확인하여 즉시 대응 가능한 프로세스 수립
Nest.js / TypeScript API 서버 유지보수 진행
내부 백오피스 웹 (React / TypeScript) 유지보수 및 신규 기능 개발
CoreUI, styled-component, React-Hook-Form, Recoil, Axios 활용
전자서명 서비스 신규구축
주식회사 소프트스퀘어드
2024.05. ~ 2024.12.
개발 스택
인프라
공통: AWS CodePipeline (CI/CD)
서버: AWS EC2, Docker-Compose
웹: AWS S3 + CloudFront
웹: React, TypeScript
서버: Spring Boot 3, Java
서비스 요구사항에 맞게 여러 형태의 사용자가 서비스에 접근할 수 있도록 Spring Security를 통한 인증/인가 로직 설계
전자 서명 관련 전체 플로우 초기 설계
계약 생성 및 메일/알림톡 전송, 서명 내용 PDF화, 서명 기록 등의 전자 서명 과정 전체 플로우 설계
서비스를 RESTful API를 통해 활용할 수 있도록 OpenAPI 스펙 설계
교육 애플리케이션 유지보수
주식회사 소프트스퀘어드
2024.04. ~ 2024.06.
개발 스택
인프라
공통: AWS CodePipeline (CI/CD)
서버: AWS EC2, Docker-Compose
웹: AWS S3 + CloudFront
웹: React, TypeScript
서버: Spring Boot 3, Java
Android/iOS: WebView를 통해 웹 애플리케이션과 통신
기존 백엔드 및 웹 앱 내 코드 분석 및 최적화 필요 부분을 정리하여 초기 로딩 속도를 약 3초에서 1초로 개선
개발자 역량 검증 테스트 'Gridge Test'
주식회사 소프트스퀘어드
2022.12. ~ 2023.12.
개발자 역량 검증을 위한 테스트 운영 시스템 백엔드 개발 (NestJS / TypeScript)
개발자 역량 검증의 필요성에 따라 Gridge Test가 개발되었으나, 모든 과정을 수동으로 진행하여 테스트 진행 리소스가 과다 발생하는 문제가 있어 채점을 제외한 전 과정을 자동화하였습니다.
Notion API, AWS SDK를 활용한 테스트 시스템 구축
각 API의 Limit를 고려하여 API를 호출할 수 있도록 설계
사용자의 지속 참여와 동기를 유발하고 몰입도를 높일 수 있도록 게이미피케이션 (Gamification) 전략 도입
GitHub Commit 메시지를 기반으로 개별 부여 된 Notion 페이지에서 다음 문제를 자동으로 받아볼 수 있는 자동 문제 전달 시스템 개발
Redis를 활용하여 과다 작업을 방지하기 위한 Queue 시스템 구현
Web 테스터를 위한 백엔드 서버 개발 (NestJS / TypeScript)
로그인/회원가입, 글쓰기, 팔로잉 등 기본적인 SNS 서비스 API 구현
TypeORM을 통한 데이터베이스 활용
카카오 SDK를 통한 카카오 로그인 연동 구현
서비스 인프라 구축
AWS EC2, RDS, Route53을 활용하여 서비스 인프라 구축
GitHub Action 및 AWS CodeDeploy를 활용한 CI/CD 환경 구축
AI 개발 질문 봇 'CodePicker'
주식회사 소프트스퀘어드 (교육/커뮤니티 팀)
2023.02. ~ 2023.05.
자체 커뮤니티 멤버 전용 AI 개발 질문 봇 'CodePicker' 개발 (NestJS / TypeScript)
Discord API를 활용하여 Discord Bot 형태로 사용자가 질문한 내용을 답변할 수 있는 시스템 개발
OpenAI GPT-3.5 / 4 (Chat Completions) API를 활용하여 개발에 최적화된 질문을 받을 수 있도록 처리
목표 달성을 돕는 미션형 투두리스트 앱 'J력'
개인
2023.11. ~ 진행 중
목표 달성을 돕는 미션형 투두리스트 앱 Flutter 개발
Google Play 스토어 / Apple App Store에서 현재 실제 서비스 진행 중
기존 iOS, Android 기반 앱을 Flutter로 재개발 진행
Provider 라이브러리를 활용하여 MVVM 디자인 패턴 적용
Dio, Retrofit 라이브러리를 사용하여 REST API 연동 구현
Interceptor를 활용해 Access Token 만료 시 Refresh Token을 활용하여 토큰 재발급 로직 구현
Flutter Local Notification 라이브러리를 활용하여 Firebase Cloud Messaging 적용
카카오, 애플 로그인 구현
홈 화면 위젯 기능 개발
home_widget 라이브러리를 활용해 개발
Flutter 애플리케이션과 위젯 간 공통 통신 부분 개발
Android 네이티브 개발 필요 부분을 Kotlin 기반으로 개발
가천대학교 성적 조회 애플리케이션 '가천 Grade'
개인
가천대학교 성적 조회를 위한 Android 애플리케이션 개발
Kotlin으로 개발하였으며, MVVM (Model - View - ViewModel) 패턴을 활용하였습니다.
별도의 OpenAPI가 제공되지 않는 구조였으므로, 패킷을 통해 인증 방법 및 데이터 조회 방법을 연구하여 개발하였습니다.
재학생 팀원을 추가로 선발하여 Flutter로 전환 개발 진행 중
기획, 설계 및 코드 리뷰, 프로젝트 매니징 진행
블루투스 기반 물건 위치 추적 앱
개인
2020.02. ~ 2020.09.
지인과 함께 외주를 수주받아 진행하였으며, BLE 통신 등의 핵심 로직
Kotlin으로 개발하였으며, MVP (Model-View-Presenter) 패턴을 활용하여 개발하였습니다.
Firebase Firestore 기반 회원/커뮤니티 기능 개발
FCM을 활용한 Push 알림 기능 개발
BLE 기반 외부 장치와 연결하여 기기를 제어할 수 있는 기능 개발
기기 내 LED 제어 등 정해진 프로토콜에 따라 Android 기기와 BLE 기기 간 통신 구현
RSSI를 이용해 BLE 기기와의 거리 계산 기능 개발
웹브라우저 텍스트 대치 확장 프로그램 '줄임말 변환기'
개인
2020.01. ~ 2022.11.
Chromium 기반 브라우저에서 특정 단어와 대치되는 문장을 사전에 설정하고, 텍스트 입력 창에서 설정한 단어 입력 후 스페이스바를 누르면 자동으로 사전 설정된 문장으로 변환하는 브라우저 확장 프로그램 (VueJS, Element UI)
- 가천대학교 아르테크네센터 주최 2019 G-Software Challenge 우수상 수상
- 2024년 2월 기준 Whale Store 총 다운로드 수 7,500회 이상 (https://store.whale.naver.com/detail/bhkpphkbomelmkadobdpdnngcoikjmkj)
대외활동
지능정보통신연구실 (INC Lab.) 학부연구생
가천대학교 AI/소프트웨어학부
2022
https://sites.google.com/gachon.ac.kr/inclab
크로스모달 학습 (Cross-modal Supervision) 기반의 Wi-Fi 센싱 프레임워크 및 응용 기술 연구
Raspberry Pi 4를 이용한 Wi-Fi CSI (Channel State Information) 추출 및 수집 시스템 구현
CSI 수집을 위한 Open-Source Library (Nexmon CSI) 빠른 설치 스크립트 제작
pypcap 라이브러리를 이용하여 CSI 패킷 수집 후 분석하여 필요한 부분만 추출하는 시스템 개발
IoT 정밀 측위기술 및 공간분석이론을 적용한 유아교육 공간과 유아 행동 및 발달에 대한 융합연구
MOT (Multi-Object Tracking) 기술을 이용하여 수집된 사람의 이동 동선 평면화 및 MySQL 공간 데이터 타입 (Spatial Data Type)을 활용한 평면 좌표 저장 및 동선 분석 시스템 구현
선민재, 장정익, 남선우, 최재혁*, 차기주. 2022. 다중 객체 추적 기술을 활용한 객체 위치 데이터 분석 시스템 설계. 2022 한국차세대컴퓨팅학회 춘계학술대회: 363-366. https://www.earticle.net/Article/A412376
Jungik Jang, Minjae Seon, Jaehyuk Choi*, “Lightweight Indoor Multi-Object Tracking in Overlapping FOV Multi-Camera Environments”, Sensors, 2022, https://doi.org/10.3390/s22145267
Jung-Ik Jang, Min-Jae Seon, Seon-Woo Nam, Jaehyuk Choi*, Ki-Joo Cha, “Design of An Intelligent Indoor Location Analysis System Using Multi-Object Tracking”, Journal of Digital Contents Society - Vol. 23 , No. 8, 2022, https://doi.org/10.9728/dcs.2022.23.8.1519
TOPCIT (소프트웨어 역량 검정 시험)
정보통신기획평가원
2021
2021년 10월 30일 16회 정기평가 응시 / 498점, 3수준
가천대학교 UMC (University MakeUs Challenge)
가천대학교
2021
전국 대학생 연합 동아리 UMC (University MakeUs Challenge) 가천대학교 1/2기 교육팀장 역임
학기 중 진행되는 부원 스터디 관리 총괄
Git을 처음 사용하는 챌린저들을 위해 Git에 대한 기본 사용 방법 및 협업 가이드라인을 작성하고 동아리 전체에 필수 수행 항목으로 지정하여 가천대 내 챌린저들의 Git 사용 역량을 강화시켰습니다.
인스타그램 클론코딩을 통한 개발 연습 과정을 최초로 도입하였습니다.
방학 중 진행되는 부원 앱 런칭 프로젝트 멘토링 진행
프로젝트 진행 중 발생하는 트러블 슈팅에 대해 함께 고민하고 해결할 수 있도록 도움을 주었습니다.
프로젝트 멘토링 및 질문 답변 공로를 인정받아 1기 종료 후 UMC 중앙으로부터 공로상을 수상하였습니다.
Git린이를 위한 깃린이 코스 실시간 강의 실습 멘토
개인
2021
현재는 인프런에서 동영상 강의로 제공중인 'Git린이를 위한 깃린이 코스' (https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-%EA%B9%83-%EA%B9%83%EB%A6%B0%EC%9D%B4%EC%BD%94%EC%8A%A4) 실시간 강의에서 강의 진행시 멘토로서 참여하는 분들의 실습 진행에 도움을 주었습니다.
제 2회 전국 청소년 오픈소스 앱 공모전
우분투 한국 커뮤니티, 국민대학교
2016
2015년에 이어 우분투 한국 커뮤니티와 국민대학교가 공동 주최한 청소년 오픈소스 앱 공모전에서 Android 애플리케이션으로 개발한 '오남고등학교' 앱으로 최우수상을 수상했습니다.
제 1회 오픈소스 식단 앱 공모전 우수상
우분투 한국 커뮤니티 & 국민대학교
2015
우분투 한국 커뮤니티와 국민대학교가 공동 주최한 오픈소스 식단 앱 공모전에서 Android 애플리케이션으로 개발한 '어람중학교' 앱으로 우수상을 수상했습니다.
당시 고등학생 분들이 많이 출전한 대회였으나 중학생 신분으로 공모전에 참여하여 수상하였습니다.
포트폴리오
교육
가천대학교
대학교(학사) | 소프트웨어학과
2019.03. ~ 2023.02. | 졸업