프로젝트의 완성도는 다양한 상황에서 결정되기에, 저는 개발과정에서 이처럼 대응합니다.
✔ 팀원 간 이해관계를 명확히 - 시각자료(다이어그램 등)를 통해 분명히 밝혀 소통한다
✔ 요구사항은 자주 변한다 - 디자인패턴을 활용해 확장성을 고려한다
✔ 시간에 따라 프로젝트 방향을 잃기도 한다 - 자발적인 문서화로 목적을 명시한다
✔ 동료는 지식을 공유한다 - 기술 습득 과정을 때마다 기록하여 공유하고 피드백을 나눈다
완성을 결정하는 한 조각을 맞추겠습니다.
▪︎ 자동화 프로세스(RPA) 업무 발굴, 일일 공지성 알림 프로세스 개발
▪︎ MariaDB Master/slave 복제 이중화 구성
▪︎ 통합경영관리시스템의 업무보고 미작성알림/미완업무이월/상태관리 Batch 프로세스 개발
▪︎ 부산시 지역특화산업 프로젝트 - 유실물 찾기 서비스 FindingAll 내의 분실자와 습득자 간 채팅 시스템 개발
▪︎ 해외 불법 사이트 웹 페이지내 HTML 문서에 대하여 jQuery 기반으로 TAG 분석, 부적절한 불법 컨텐츠 공유량 검수
▪︎ React 기반 UI/UX 추가 화면 개발, 데이터 추가를 위한 모달 구축, 데이터 계층구조에 대한 트리뷰 구현
▪︎ NodeJS 환경의 CRUD API 개발, K6 라이브러리를 통한 부하테스트, Jest 라이브러리를 통한 시나리오 테스트
▪︎ Git(GitLab) 기반의 프로젝트 형상 관리
프로그래밍 문법 교육 멘토
프로젝트 실습 교육 멘토
🌕: 기본 개념을 토대로 간단한 작업 수행이 가능합니다. 🌕🌕: 문서를 참고하여 기본 문제해결이 가능합니다. 🌕🌕🌕 : 복잡한 기능 구현이 가능합니다. 🌕🌕🌕🌕 : 다른 개발자에게 지식을 공유할 수 있습니다. 🌕🌕🌕🌕🌕 : 새로운 방법론이나 기술을 개발할 수 있습니다.
🌕🌕🌕🌗🌑 - REST API 구현 - Junit 기반 TDD - ORM (JPA) -QueryDSL을 통한 동적 쿼리 생성 -Mybatis를 이용한 데이터 처리 - Scheduler 구현 - Filter 및 JWT 이용
🌕🌕🌑🌑🌑 -Express.js를 이용한 API 구현 - Jest, K6를 통한 테스트
🌕🌕🌑🌑🌑 - Vuetify 라이브러리 이용 - Vuex를 통한 데이터 관리
🌕🌑🌑🌑🌑 - MaterialUI/Bootstrap를 통한 화면 구현 - Redux를 통한 데이터 관리
🌕🌕🌕🌑🌑 - Schema, Table SQL 작성 및 관리 - Master/slave Replication 관리
🌕🌕🌑🌑🌑 - Schema, Table SQL 작성 및 관리
🌕🌕🌑🌑🌑 - Key/Value 기반 데이터 관리 - Set, List 자료형 활용 - AOF 방식의 데이터 백업 관리
🌕🌑🌑🌑🌑 - EC2 프로젝트 배포 -S3를 통한 이미지 저장 관리 -AWS MSK를 통한 메시지 큐 이용 -IAM 인증서 발급 및 관리
🌕🌕🌑🌑🌑 - 프로젝트 버전 관리 - Docker-Compose를 통한 프로젝트 환경(Java, Database) 관리
🌕🌕🌕🌑🌑 - GitFlow 방식 이용 및 Branch 관리 - Commit Convention(Udacity) 적용 -Git Branch
🌕🌕🌕🌑🌑 - Agile 방식의 협업 - 이슈 발행 및 스프린트 관리
🌕🌕🌕🌑🌑 - AWS MSK 클라우드 서비스 활용 - Parition과 Key를 활용한 메시지 순서 보장 -Producer와 Consumer를 통한 비동기 메시지 처리
🌕🌕🌑🌑🌑 - KakaoMap, ChatGPT, GoogleOAuth, GoogleCalendar, 공공데이터포탈 API ...
타임랩스 기능 중심 소셜 네트워크 서비스(6인 팀 개발) - 타임랩스가 포함된 피드의 좋아요, 댓글을 통한 심리적 보상 제공 - 피드를 통해 챌린지 이어가기를 통하여 영향력 조회 기능 제공, 이를 통한 성취감 및 참여도, 만족도 향상과 회원 간 연결성 부여
개인 역할
🆅 JDK 21과 SpringBoot 3.2의 적용
▪︎ Java21의 가상스레드의 특징을 활용해 I/O Blocking 상황에서의 성능적 이점을 취하고자 하였습니다.
▪︎JMeter 부하테스트를 통해 임의의 상황을 만들었으며, 평균 응답속도 (3239ms -> 2255ms)의 1.5배 향상을 확인하였습니다.
🆅 AI 서버와의 연동을 위한 Proxy API구현
▪︎ AI기능을 수행하는 별도 서버와의 연계를 위해, Proxy 역할을 하는 API를 구현하였습니다.
▪︎ SpringBoot 6.0 이상에서 도입된 HTTP 클라이언트인 ResctClient 객체를 활용함으로써, 상태 코드에 따른 예외 처리를 간결하게 구현하여 유지보수성을 높이는 데 기여하였습니다.
🆅 AWS S3 서비스 이용
▪︎ 클라우드 서비스를 활용하여 파일 업로드와 저장소 관리의 안정성을 높이고자 사용하였습니다.
🆅 Junit을 통한 TDD
▪︎ H2 데이터베이스를 통해 초기 데이터를 스크립트로 생성하여 테스트 환경을 조성하였습니다.
▪︎ Junit5을 통해 TDD를 진행하였고, 단위 테스트를 통해 개발의 정확성을 취함과 동시에 오류 발생 시 추적에 대한 편리함을 얻었습니다.
결함 탐지 Device를 통한 신축 건물 시공 결함 피해 예방 서비스(6인 팀 개발) -신축 건축물의 사전점검/홈 체크 플랫폼 -ROS를 통한 자율주행 디바이스
개인 역할
🆅 Spring Security와 JWT기반의 회원 보안
▪︎ 사용자 데이터와 서비스 접근에 대한 보안을 제공하고자 하였습니다.
▪︎ JWT를 활용한 무상태 인증 시스템을 구축하였습니다.
▪︎ JWT의 유효시간과 RefreshToken 발급의 균형점을 고민하였습니다.
▪︎ 사용자의 로그아웃 시 토큰을 무효화하기 위한 BlackList 관리 방법과 Redis를 통한 방법을 검토하였습니다.
🆅 Session, Redis, Naver SMS 인증을 통한 비회원 보안
▪︎ 비회원 사용자에게 일정 수준 이상의 보안 인증 절차를 거치는 것을 목표로 하였습니다.
▪︎ Naver SMS 인증을 통해 비회원 계정의 신뢰성을 보장하였습니다.
▪︎ Redis를 통해 인증 정보를 캐싱하고, TTL 설정을 통해 SMS 인증 유효 기간을 관리하였습니다.
🆅 IoT 기기와 App 간의 Socket 통신 구현
▪︎ 결함 탐지를 수행하는 IoT 시뮬레이터 기기와 실시간 데이터 통신을 목표하였습니다.
▪︎ WebSocket을 통한 양방향 통신을 구현하였으며, Stragety 디자인 패턴을 Socket Handler에 적용하였습니다.
▪︎ 디자인 패턴을 적용함으로써 IoT 기기의 다양한 메시지 종류 처리를 용이하게 하며, 핸들러 간 의존성을 최소화하되 새로운 메시지 타입이 추가되더라도 코드 변경을 최소화하는 확장성을 고려하였습니다.
▪︎ 다양한 메시지 규약에 대해 이해를 명확히 하고자 별도의 다이어그램을 통한 시각화 자료를 공유하여 팀원과 소통하였습니다.
가족 소통 증진을 위한 AI 탑재 Smart Mirror(6인 팀 개발) - Google Calendar 정보 기반 가족 관련 일정 관리/행동 유도 - 얼굴/표정/음성 인식 기반 사용자와의 상호작용
개인 역할
🆅 Google OAuth와 Google Calendar 기반 사용자 일정 관리
▪︎ 가족 소통 증진을 위한 방법으로 가족 구성원 간 일정을 공유하고자 하였습니다.
▪︎ Google CAlendar API를 통해 기록된 일정을 연동하며, 이를 위한 Google OAuth 인증과 가입을 도입하였습니다.
🆅 멀티 데이터베이스(MariaDB, Redis) 관리
▪︎ 관계형 데이터로서 일반 데이터인 사용자, 일정 등에 대한 정보는 MariaDB에 저장하였습니다.
▪︎ 빠른 접근이 필요하고 휘발성이 있는 캐시성 데이터인 스마트미러의 출력텍스트, 사용자 토큰정보는 Redis에 저장하여 관리하였습니다.
🆅 ChatGPT 기반 사용자 일정 요약 및 생일선물 추천
▪︎ 사용자의 일정과 데이터를 기반으로 유의미한 정보를 요약하고, 가족 구성원의 생일선물 아이디어를 제공하는 텍스트 추출을 목표로 하였습니다.
▪︎ ChatGPT 요청 시 필요한 Prompt를 설계하여 사용자 데이터 기반으로 GPT로부터 JSON 형식의 응답을 받아 사용자에게 전달할 텍스트를 정제하였습니다.
🆅 Scheduler를 통한 사용자 행동 유도 텍스트 저장
▪︎ 사용자의 특정 행동(가족 약속 이행, 날씨에 따른 준비물 안내, 표정 통계에 따른 대화)을 유도하기 위해 동적 메시지 생성을 목표하였습니다.
▪︎ 매일 아침마다 출력할 메시지를 생성하기 위해 Spring Scheduler를 통한 사용자 데이터 기반 맞춤형 데이터를 정제하였습니다.
▪︎ 사용자의 데이터 가공 및 정제를 위하여 Chain Of Responsibility 디자인 패턴을 적용하여 일련의 작업 수행을 구현하였습니다.
▪︎ 디자인 패턴을 적용함으로써 각 작업 단계가 독립적으로 실행됨으로써 다음 단계에 영향을 주지 않도록 설계하였고, 작업 흐름이 추가되더라도 유연한 확장이 가능하게 하였습니다.
공공데이터 기반 여행 추천 플랫폼(5인 팀 개발) - 공공데이터를 활용하여 국내 각지 여행지 정보 수집 - 사용자별 맞춤 여행코스 추천 서비스 목표
개인 역할
📍 SpringBoot기반 REST API구현
AR 메뉴판 앱 프로젝트(4인 팀 개발) - 기존 일반 음식점의 평면적인 텍스트 중심 정보의 확장 목표 - 증강현실(AR) 기술을 통해 안드로이드 앱 화면에서 3D음식 콘텐츠를 확인하여 시각적으로 더욱 풍부하고 현실감 있는 정보를 제공하는 UI/UX 구현을 목표
개인 역할
📍 Unity 엔진과 Vuforia(SDK)를 이용한 음식 AR 콘텐츠 제작
📍 Node.js 환경의 RESTful API 서버 구축
📍 MongoDB를 통한 음식 데이터 관리