미리보기
기본 정보
코더에서 엔지니어로 나아가는 개발자
기술 스택
HTML/CSS, JavaScript, PHP, Python, MySQL, React, Spring Boot, JPA, React Native, Vue 3, AWS, GitHub, TypeScript
교육
부산대학교
대학교(학사) | 수학과
2015.03. ~ 2022.02. | 졸업
경력
이지스엔터프라이즈(주)
사원 | DX팀 | 재직 중
2023.07. ~ 재직 중 (1년 6개월)
내용: 아파트 내 관리 사무소 편의를 위한 전자결재 솔루션 제공.
기술 스택:
Vue 3: SPA 개발 및 유지보수
직원관리, 전자결재 기능 유지 보수
입주자 단체 페이지, 입주자 단체 전자결재 페이지 개발
전역 상태 관리로 pinia 사용
UI Framework는 element-plus 사용
TypeScript: 타입 안정성을 위해 사용.
Docker: 배포 시, docker 컨테이너로 배포
AWS: 인프라 관리
Jenkins -> ECR -> ECS -> ALB -> Cloudfront 형태로 배포
보안팀과 협력하여 당사의 클라우드 서비스 보안 문제 취약점 대응.
AWS에 관심이 생겨 Cloud Practicioner 자격증 취득. SAA 시험 현재 준비 중.
기타:
한 페이지에 코드가 너무 많아 해당 프로젝트에 대한 리팩터링을 혼자 주도하여 진행 한 경험 있음.
파일 구조 통일: Vue 공식 페이지에 따라 script, template, style 순서로 변경
페이지 안에 있던 인터페이스를 @types 폴더 안으로 분리
불필요한 주석 파악하여 제거
안 쓰이는 코드 파악하여 제거
불분명한 변수명 변경
공통으로 사용되는 상수는 constants 폴더에 분리
공통으로 사용되는 함수들은 composables 쪽으로 분리
총 합하여, 대략 17,091 코드 라인 제거한 경험 있음. 추가적으로 사이드 이펙트 없이 정상 작동 함을 확인.
당사의 배포 파이프라인을 마이그레이션 한 경험 있음.
기존에는 Jenkins -> ECR -> ECS로 도커 컨테이너를 띄워 ALB, Cloudfront를 통해 사용자가 해당 웹 서비스에 접근함.
하지만, Vue 3 배포 과정에서 generate 할 때, 서버를 띄우는 것이 아닌 정적 리소스(.dist 폴더 아래)로 개발되는 것을 파악하여, ECS Fargate로 배포하는 것은 낭비라고 생각함.
배포 파이프라인을 Jenkins -> S3로 마이그레이션 하여 배포 시간대를 5분 가량 단축 시켰음.
보안적인 문제도 OAC를 적용하여 S3의 퍼블릭 엑세스를 차단하고, Cloudfront를 통해서는 접근이 가능하도록 함.
ECR, ECS, ALB 사용 안함으로 인해 대략 프론트엔드 서비스 당 약 월당 7만원 세이브 함.
비케이위너(주)
책임 연구원 | 개발팀
2021.12. ~ 2023.07. (1년 8개월)
내용: 아파트 내 공동 생활 편리성 극대화 및 관리 사무소 업무 간소화를 위한 플랫폼 제공.
기술 스택:
Node.js: npm 패키지 관리
React: SPA 개발 및 유지 보수
E-Book third party 모듈 연결 후, E-Book 조회 및 관리 기능 추가
예약 차량 관제 시스템 설계했으나, 사정 때문에 도입 실패
그 외, 운영 및 유지 보수 업무 수행
Spring Boot: API 개발 및 유지 보수
MyBatis로 운영 및 유지 보수(검침, 전자 결재 등) 업무 수행
JPA Hibernate로 일부 API migration 진행
입대의 관련 API 개발
React Native: application 개발 및 유지 보수
아파트리 입주자: 회원 정보, 편의 시설 예약, 주민 게시판 목록, 주민 게시판 상세 화면, 전자 결재 등 디자인 및 기능 유지 보수. 입대의 관련 Screen 개발.
아파트리 관리 사무소: 전자 결재 현황, 방문 투표, 편의 시설 예약 현황, 차량 등록 조회, 검침 등 디자인 및 기능 유지 보수.
Github: 형상 관리
프로젝트
메뉴 추천 리스트 웹/앱 서비스 개발
기타
2024.04. ~ 진행 중
내용: 메뉴 추천을 해주는 애플리케이션 중, frontend/mobile application 파트 담당 개발.
개발 사유: 사용자의 반경 안, 메뉴 추천을 통해 사용자의 식사 고민을 덜어주기 위함.
기술 스택:
Next.js: SPA 개발
전역 상태 관리로, Zustand 사용
API 통신을 하기 위해, GraphQL 사용
React Native: application 개발
교수용 수업 할당 프로그램 개발
부산대학교 산학협력단
2021.11. ~ 2022.02.
내용: 교수 별 강의에 대한 강의실, 강의 시간, 학점, 수강 인원을 변수로 하여 강의 시간표를 수기 작성에서 자동 작성하게 변경.
개발 사유: 수작업 배정이 아닌 교수, 강의 시간, 강의실, 수강 생 수를 감안하여 자동 시뮬레이션을 통한 최적의 강의 시간표 작성.
기술 스택: Python(PyQT5, pandas, matplotlib), Qt Designer, Github
개발 내용:
과거 시간표를 데이터 전 처리 후, 선호 시간대 추출.
교수 님 순번에 따른, 선호 시간대 우선 배정.
5년 분량의 데이터를 개발한 알고리즘에 따라 데이터를 학습 시킨 결과, 수기 작성한 시간표와 88% 유사도 나타냄.
부산대학교 수학과에 기술 이전(2022.03.05)
기타:
처음 팀 단위 프로젝트를 시작하여, 형상 관리에 대한 고민으로 Github을 처음 접하여 바로 도입.
Github 브랜치를 각각 개인 브랜치를 두고, main 브랜치에 대한 관리, 병합 처리 도맡아 함.
Python이 처음인 팀원들을 데리고 교육 시키면서 진행. 팀원들에게 road map 제시 후, 해당 일정대로 개발 일정 소화 경험하여 뿌듯함을 느낌.
최종 결과물 참조: https://github.com/haramsong/classschedule
학원 관리 프로그램 개발
개인
2021.09. ~ 2021.11.
개발 내용:
기준 정보 관리하면: 학기, 학기 시간표, 강의, 강의실, 강사, 수강 생 정보 기준 정보 관리
연관성 등록 화면: 학기 시간표/강의, 강의/강의실, 강의/강사, 강의/수강 생 연계 등록
현황 조회 화면: 강의, 강의실, 강사, 수강 생 시간표
개발 사유: 소규모 학원의 학사 일정 및 주요 정보를 Excel로 관리하고 있어서 이를 개선하기 위함.
기술 스택: Python(PyQT5, pandas, matplotlib), Qt Designer
한계 및 issue: DB의 역할을 excel로 stand-alone하게 구축. 사업장에 배포한 프로그램을 등록해주고 유지 보수 하는데 어려움을 느낌.
극복 내용: 프로그램을 효율적으로 배포하는 방법에 대한 고민 시작. 사업장 1 곳에 배포 완료.
최종 결과물 참조: https://github.com/haramsong/hakwonmgmt
회원 관리 프로그램 개발
개인
2021.04. ~ 2021.08.
내용: 탁구장에 등록하는 회원 정보, 회원권 시작일, 종료일 관리, 기간 양도, 연장, 메모를 효율적으로 관리
개발 사유: 회원 정보, 회원권을 하나의 Excel 파일에 저장하여 관리 및 추적 어려움.
기술 스택: PHP, MySQL, Python(PyQT5, pandas, matplotlib), Qt Designer
한계 및 issue: PHP, MySQL로 1차 개발 진행 도중, 가상 서버(APM)을 개인 PC에 구축하는데 어려움을 느낌.
극복 내용: Python으로 개발 2차 진행 및 DB 역할을 excel로 Stand-Alone하게 구축. 총 5 곳의 사업장에 배포 완료.
최종 결과물 참조: https://github.com/haramsong/membermgmt
Data Spider를 이용한 유동인구 분석 알고리즘 개발
부산대학교 산학협력단
2021.03. ~ 2021.08.
내용: 회사 연계 인턴십으로, WIFI 신호를 잡는 인원을 Data Spider(WDS)를 통해 MAC 주소를 가져와 유동인구 분석
개발 사유: 사람들의 이동 패턴, 체류 시간 등을 파악하기 위함.
기술 스택: Python(pandas, matplotlib)
개발 내용:
가상 MAC 주소를 1차적으로 구별하는 방법 찾아냄.
데이터의 패턴 분석과 정규 분포를 이용한 알고리즘 개발로 약 97%의 불필요 데이터를 걸러 낼 수 있었음.
최종 결과물 참조: https://github.com/haramsong/danviproject
아파트 관리 프로그램 개발
개인
2021.01. ~ 2021.02.
내용: 아파트 공지사항, 건의 사항, 공동 구매를 게시글을 통해 편리하게 조회하고, 일간, 공동, 월 간 관리비를 한눈에 볼 수 있도록 함.
개발 사유:
공지사항을 아파트 내 스피커를 통해 방송하는데 잘 들리지 않아 불편함을 느낌.
아파트 내 붙여진 공고, 광고, 관리비 청구서 등 낭비되는 용지가 많다고 생각함.
아파트 내 커뮤니티가 활성화 되었으면 좋겠다고 생각함.
기술 스택: HTML/CSS, JavaScript, PHP, MySQL
한계 및 issue:
1차로 HTML/CSS, JavaScript로 웹 페이지 구현.
데이터를 어떻게 DB에 저장해서 불러올 까에 대한 고민 시작.
개발 초기라 실력 부족에 대한 한계를 느낌.
극복 내용:
더 좋은 방법이 없을까 고민하다가, APM 환경을 구축하여 PHP로 2차 개발 재 진행.
기타: PHP, MySQL을 더 공부하고, 다른 언어 습득 필요성을 느껴서 Python 시작.
최종 결과물 참조: https://github.com/haramsong/apartment
자격증
AWS Cloud Practicioner
합격 | Amazon Web Services
2023.12.
SQLD
최종합격 | 한국데이터베이스진흥센터
2023.04.
정보처리기사
필기합격 | 한국산업인력공단
2023.03.
TOEIC
925 | YBM
2019.01.
외국어
영어
비즈니스 회화 가능
자기소개
안녕하세요. 저는 엔지니어로 나아가고 싶은 개발자 송하람입니다.
제 강점은...
변화를 두려워하지 않습니다.
처음 프로그래밍을 접할 시, HTML/CSS와 JavaScript를 사용하여 웹 페이지를 구현을 했지만, 어려움을 겪자, 기존 프로젝트를 갈아 엎고 APM 환경으로 개발을 재 진행했습니다. 이에 따라 Python도 습득하게 되어, 부산대학교 내 산학협력단에 들어갈 수 있는 기회를 얻었고, 해당 조직에 속해 교수 용 시간표 할당 서비스를 만들어 모교에 제가 만든 서비스를 배포할 수 있는 기회도 얻었습니다. 또한, 취업을 할 당시에, 남들이 어떻게 보면 두려워 할 수 있는 스타트업에 들어가서 개발자가 저 혼자였던 환경에서 약 1년 간 React, Spring Boot, React Native를 단기간에 습득하여 실제로 운영중인 서비스에 대해 유지 보수 업무를 수행했습니다.
한 문제에 대해 깊이 파고듭니다.
교수 용 시간표 할당 서비스를 개발할 당시에 다른 무엇보다 우선순위에 따라 특정 교수에 대해 적절한 강의, 강의 시간, 강의실을 배정해 줬어야 했습니다. 처음 한달 간은 도무지 방법이 떠오르지 않고 막막했지만, 끊임없이 고민한 결과, 선형대수학에서 배웠던 행렬이 떠올랐고, 요일, 시간대를 기준을 잡아 교수, 강의, 강의실에 배정시키는 4차원 array를 만들어 해당 알고리즘을 만드는 뼈대를 완성했습니다.
비효율적인 것을 싫어합니다.
현재 회사에서는 한 페이지에 2000라인이 넘는 코드도 존재했고, 반복되는 코드도 많았습니다. 이를 보며 리팩터링을 해야 겠다고 마음을 먹고, 현재 다니고 있는 회사에서 반복적인 코드를 공통화 시키고, 따로 분리하는 작업을 하면서 대량의 코드 라인을 줄인 경험이 있습니다.
배움에 대해 열정적입니다.
현재에 안주하지 않고, 끊임 없이 배우려고 노력합니다. 회사를 다니면서 SQLD나 AWS 관련 자격증을 취득하였고, 현재는 AWS SAA 자격증 취득을 위해 도전 중 입니다.