미리보기
기본 정보
안녕하세요 대화를 좋아하는 개발자 김기현입니다 :)
자기소개
더 나은 서비스를 위해 우리가 제공하는 비즈니스를 위해 고민하는 개발자입니다.
개발자이기 전에 서비스를 이용하는 고객이기에, 고객에게 더 나은 비즈니스 모델은 무엇인지를 고민합니다.
서비스에 애정을 갖고 일합니다. 서비스에 많은 애정을 쏟지 말라는 선배들의 조언도 있었습니다. 하지만, 애정을 갖고 진행했던 서비스와 그렇지 않은 서비스는 결과의 여부를 떠나 애정을 갖지 않은 서비스는 제 스스로 성장할 수 없었던 것 같습니다. 항상 많은 에너지와 애정을 쏟아 서비스를 최고의 서비스로 만들어 나아갈 것입니다.
단체활동을 하는 취미인 축구를 20년동안 해왔습니다. 축구를 하다보면 혼자 멋지게 드리블을 진행해서 골을 넣는 경우도 있지만, 팀원들과 함께 패스를 통해 만들어 나아가는 골들은 평생 잊혀지지 않는 경험인 것 같습니다. 제가 만들어 나아갈 서비스에 있어서 팀원들과 발을 맞춰 나아가다보면 평생 잊혀지지 않는 서비스를 할 수 있다는 믿음이 있습니다.
코드에는 정답이 없다. 라는 말을 저의 첫 사수이자 팀장이신 분께서 자주 말씀해주셨습니다. 맞습니다. 코드에는 정답이 없기 때문에 항상 의심하고 나의 방향이 맞는지 돌이켜 보아야 합니다. 저는 완벽한 코드를 짜고 싶은 욕심과 갈망이 있습니다. 그렇기 때문에 항상 의심하고 발전하려고 노력합니다.
언젠가 나의 옆에 앉는 내 동료가 나의 코드를 수정할 수 있습니다. 어떠한 사유로든 옆에 있는 동료의 코드를 또는 나의 코드를 동료가 볼 수 있습니다. 그렇기 때문에 동료에게 항상 피드백을 받으며, 코드를 리뷰하는 시간을 갖고 개선하고 성장하려고 노력합니다.
교육
(주)이젠컴퓨터아카데미
사설 교육 | Java 스마트 백엔드 실무과정
2021.05. ~ 2021.12. | 졸업
안동대학교
대학교(학사) | 미술학과
2012.02. ~ 2017.02. | 졸업
기술 스택
Spring Boot, Kotlin, Java, JPA, querydsl, aws-ec2, aws-code-deploy, MySQL, PostgreSQL, Spring Security, oauth2, JWT, Jenkins, GitHub
경력
(주)이모티브
팀장 | 웹 서비스 팀
2024.01. ~ 2024.08. (8개월)
기존 홈페이지 리뉴얼 작업
디지털 치료기기 전문성과 해외 바이어 홈페이지 방문 시 언어 문제, 전체적으로 레거시한 홈페이지와 유지보수가 안되는 문제가 발생하여 리뉴얼 작업
홈페이지 개선 작업 및 UI/UX / 다국어처리 / 사내 구성원 소개 / HR 연동 작업을 통한 신뢰성 향상 -> 47.8% 신뢰성 향상 ( 기존 면접 및 사내 구성원 대상 리서치 )
사내 홈페이지 만족도 리서치 -> 구성원 대상 82.4% 향상
해외 바이어 계약 성립 ( 일본 제약 회사와의 바이오 미팅 성립 )
EBS 초등ON 서버와의 연동 인터페이스 API 서버 개발
Spring Boot 와 Kotlin을 사용하여 운영 중인 JoyCog 앱 서버에 Interface 서버를 연동하는 구조
EBS 초등ON 서버에서 결제 진행 후, 카카오톡 메세지 발송 서비스를 통한 쿠폰 번호 발송
https://joycog.com/coupon 에서 OAuth 로그인을 통한 간편 로그인 후, 발급된 사용자 UUID 값과 전송된 모바일 문제 메시지 발송을 통해 앱 서비스 쿠폰 등록 서비스 개발
기존 EBS에서 제안한 서비스 Flow 개편하여 진행 -> 사용자 편의성 증가
AWS 인프라 관리
기존 2305$ 비용 발생 -> 무분별한 EC2 생성 및 RDS 관리가 정상적으로 관리 X,
정상적으로 사용되고 있지 않은 EC2 및 RDS 조사를 통한 데이터 보관처리와 프로젝트 이관 처리를 통한 EC2 비용 절감 평균 1579달러로 대략 월 평균 730달러 절약
AWS 빌링 시스템 (주)스마일샤크와 서비스 계약 / 누수 비용 절감을 위해 체계적인 관리
(주)이모티브
팀원 | 서버 개발팀
2022.11. ~ 2024.01. (1년 3개월)
Node.js 기존 서버에서 Kotlin 기반의 Spring Boot 서버로 개편
기존 서버 개발 외주업체의 폐업으로 인한 유지보수 및 업데이트 불가능에 따른 Kotlin 서버 개발
사업 방향 전환 및 프로젝트 변동성에 따른 공통 라이브러리 생성
기존 B2C에서 B2B와 B2G로의 사업 방향 전환에 따라 공통 핵심 알고리즘 및 함수처리 라이브러리화를 진행하여 사업 방향 전환에 따른 프로젝트 구조 변화 대응 속도 향상 ( 기존 3주정도 걸리는 작업을 라이브러리화를 통해 처리)
JWT 암복호화를 통한 로그인 처리
기존 세션으로 처리되었던 로그인 방식에서 JWT를 사용하여 개선 작업을 진행.
세션 처리 방식에 보안성 및 기타 오류사항 개선 및 URL을 통한 리포트 접근 처리 방식 변경
Springfox 도입 및 Springdoc으로의 전환
기존 API 문서화를 Excel 방식으로 처리하여 API 문서화 작업에 많은 시간이 소요. ( 대략 한 가지카테고리의 기능 당 3시간 정도 소요. ) -> Springfox을 사용하여 자동 문서화 및 API 테스트를 할 수 있도록 도입.
Springfox 서비스 중단 및 Webflex 사용을 위해 Spring doc으로의 전환
해당 API 문서화 사용을 위해 문서화 진행 및 Swagger 사용 교육 진행
(주)더조인
팀원 | 백엔드 개발팀
2022.03. ~ 2022.09. (7개월)
Java 기반의 Spring Boot 백엔드 시스템 개발 및 유지 보수
사용자 걸음 데이터를 통한 Daily, Monthly Mission 서비스 개발
Swift에서 측정한 걸음 수 데이터를 통해 Daily Mission Clear 서비스 개발
Daily, Monthly Report 발송을 위한 푸시 메세지 발송 서비스 개발
Spring Scheduler를 사용하여 푸시 메세지 발송 서비스 개발
설문 데이터 기반의 체성분 및 체지방 인바디 데이터 측정 서비스 개발
체성분 및 체지방 관련 머신러닝 API와의 통신과 설문 데이터를 통한 인바디 데이터 결과 값 서비스 개발
시스템 업데이트 Admin API 개발
시스템 업데이트 시 필요한, csv 및 기타 파일 업로드를 위한 S3
프로젝트
아동 ASD ( 자폐아동 ) 디지털 치료기기 "이리온" 프로젝트
(주)이모티브
2022.12. ~ 2023.03.
기간 : 2022.12 ~ 2023.03 ( 약 4개월 간 )
인원 : 클라이언트 개발자(1), 백엔드 개발자(1), UI/UX 디자이너(2), 원화가(2), 기획자(1)
역할
프로젝트 백엔드 시스템 설계 및 데이터베이스 설계
팀원 관리 및 프로젝트 스케줄 관리
아동 ADHD 웰니스 서비스 StarRuckus의 서버 개편 작업 및 유지보수
(주)이모티브
2022.12. ~ 2023.03.
기 간 : 2022. 12. 01 ~ 2023. 03.04 ( 개발 기간 )
인 원 : BE (1), CE(1), FE(1)
기존에 서버는 외주업체를 통해 개발을 진행하였고, Node.js를 사용하여 개발이 진행되어 있었지만. 외주 업체의 업무 중단에 따라 서비스 유지보수 및 업데이트에 차질이 생겼고, 서버 개편 작업을 진행하였습니다. 서버 개편 작업은 Spring Boot 프레임워크와 Kotlin을 사용하여 진행하였습니다. 처음 JWT를 도입하여 진행하였고, DEV, QA용 EC2의 CPU가 Jenkins 빌드 시, 허용치를 벗어나 서버가 죽는 현상이 빈번하게 발생하였고, 기존에 사용 중이던 AWS 빌링 서비스 제공 업체에서 스타트업 크래딧을 제공해주는 것을 알았고, AWS CodePipeline을 사용하여 해당 문제를 해결하였습니다.
1-1. Custom Exception 예외 처리 ( 웹과 앱 예외처리 별도 구성 )
Web Client 서버와 App Client 서버를 하나의 서버에서 구성을 진행하였습니다. 여기서 Web와 App(Unity)의 예외처리 방식이 달랐고, 이미 앱은 개발을 완료하였고, 웹 개발 또한 개발이 완료된 상태였기 때문에 예외 처리를 클라이언트별로 진행을 해야했기에 WebException과 AppException을 별도로 구성하여 Enum 클래스를 사용하여 예외를 모두 정의하여 진행하였습니다. Enum을 구성할 때에도 Object 클래스를 사용하여 진행하였고, 이는 Spring doc API Document를 작성 시, 개발적인 수고로움을 덜기 위해서 해당 방법을 사용하여 진행하였습니다.
1-2. Inicis 본인인증 서비스 개발
Inicis 본인인증 서비스의 경우, 이니시스 내부에서 사용하는 암호화는 SEED-CBC 방식으로 해당 암호화는 Java를 제공하고, 해당 암호화를 Kotlin으로 변환하여도 완벽하게 해시단위의 코드까지는 변환되지 않았기에 Kotlin 전용으로 Java파일로 암호화를 진행하고 본인인증도 가능한 형태로 JAR로 변형하여 implement하여 진행하였습니다.
1-3. Machine Learning 서버 및 데이터 구조 변경
머신러닝 서버와의 통신을 위해 REST Templete를 사용하여 통신하였고, 게임 데이터에 따른 아동의 주의력, 충동조절 능력 등을 계산하여 진행하였습니다. 데이터가 정확하게 계산되는지 또는 예외사항이 발생하는지에 대한 테스트가 필요했고, 기존에 수기로 진행하였던 테스트를 API로 만들어 기존 2주씩 소요 되던 검증을 3.5일로 줄일 수 있었습니다. 검증에 2주가 필요하던 시간에 개발 검증 성능 테스트를 모두 진행할 수 있었습니다.
기존에는 Json 형태로 MachineLearning 데이터를 넣고 있었고, 연구진분들께서 데이터 조회 또는 쿼리 변형하여 데이터 추출 시에도 불편함을 많이 느끼고 계시는 형태였습니다. Json 형태의 데이터 구조에서 Type별 데이터 구조형태로 변경하였고, 이에 따라서 데이터 테이블 설계 및 데이터 이관 작업을 진행하였습니다.
Juvis Diet 프로젝트 FIET ( 모바일 헬스케어 앱 서비스 ) API 서버 개발
(주) 더조인 / 서버 개발팀
2022.03. ~ 2022.08.
FIET 초기 설문 결과 값에 따른 인바디 데이터 결과 값 온보딩 서비스 API 개발 및 성능 개선
36개 설문 답변 내역 정보를 통해 체성분, 체질량, 체지방 결과 값을 머신러닝 서버에 송출하여 얻은 결과 값을 얻는 시스템 구조 및 설문 내용이 달라질 수 있는 서비스 확장 범위까지 고려해서 시스템 설계를 진행하였습니다.
초기 설계된 시스템에서는 성능 테스트 시, 서버 지연이 발생하여, 쿼리 성능 개선을 위해 인덱싱 및 조인 테이블 쿼리를 개선하여 속도를 향상하였고, 머신 러닝 서버와의 통신 지연시간을 확보하기 위해 멀티 스레드 방식으로 처리하였습니다. 기존 대비 63.6%의 서버 속도가 향상되었습니다.
Monthly, Weekly, Daily 리포트 푸시 메세지 발송 서비스
Spring Scheduler를 이용한 푸시 메시지 발송 서비스 구현하였고, 사용자의 사용률이 현저히 떨어지는 시간의 가설을 타 서비스의 이용 시간대를 조사하여 푸시 메세지를 순차 발송하는 서비스를 구현하였습니다. 사용자의 값을 지난 주에 활동 데이터가 있으나, 이번주에는 활동 내역이 없는 사용자와 활동 내역이 있는 사용자 지난 주와 이번 주 모두 활동 내역이 없는 사용자 세 가지 타입으로 구분하여 서버의 부하를 줄이기 위하여, 사용자 타입별 발송 시간대를 다르게 하여 사용자의 리텐션을 올리는 데에도 기여하였습니다.
Swagger 임시 Admin 서비스 개발
초기 빌드업 당시, 어드민 서비스에 대한 세부 정의가 명확하게 이루어지지 않은 상태로 개발이 시작되어, 운영 시 필요한 어드민 서비스가 빠르게 개발되어야 하는 상황이 발생하였고, 임시로 Swagger API를 사용하여 어드민 운영을 진행하고자하는 의견이 받아드려졌고 Swagger를 통해 시스템 기획자님께 필요한 Client Language File 및 시스템 전반에 필요한 CSV 파일 등의 업로드 및 사용자 Monthly, Weekly, Daily 리텐션 및 사용자 정보 조회 전반에 필요한 API 등을 개발하였고, 비개발직군의 마케터 및 기획자 분들의 사용성을 확대하기 위해서 Document를 별도로 작성하여 배포하였고, 별도로 관련 사용에 대한 교육을 진행하였습니다. 또한 API가 선행되서 개발되었기 때문에 어드민 페이지에 대한 외주 개발이 수월하게 이루어졌습니다.