Tech Stack
iOS
•
UIKit · AutoLayout · Snapkit
iOS 개발 입문 시 사용한 UI 프레임워크입니다.
◦
UIKit: CollectionView, TableView 등 AutoLayout을 이용해 다양한 컴포넌트 구현 경험
◦
SnapKit: AutoLayout을 코드로 편리하게 작성하기 위해 사용
•
SwiftUI
다양한 프로젝트에서 빠른 프로토타이핑과 UI 개발에 활용해보았습니다.
◦
SwiftUI의 데이터 흐름에 익숙하며 MVVM, MVC 등의 아키텍처를 적용하여 앱 구현 경험 풍부
•
Combine
럭키비키 프로젝트에서 프레임 저하 문제 해결을 위해 사용해보았습니다.
◦
Swift Concurrency와의 차이를 이해하며, 비동기 데이터 흐름 처리 능력 보유
•
Firebase
다양한 프로젝트에서 활용한 경험이 있습니다.
◦
Auth, Firestore, FCM, Functions, Analytics 등을 직접 구현 및 팀 지원
◦
Firebase 관련 서비스 사용 및 문제 해결 능숙
CI/CD
•
Xcode Cloud
하루비 프로젝트에서 CI/CD 파이프라인을 구축한 경험이 있습니다.
◦
CI/CD 제안 및 구축 과정에 기여하여 지속적 통합·배포 환경 설정
Collaborate
•
Github
개인 및 팀 프로젝트에서 버전 관리와 협업 도구로 활용해보았습니다.
◦
Git Flow 등 워크플로우 숙련
•
Jira
맥타인지 프로젝트에서 이슈 관리 및 협업 플로우 구축을 제안하고 사용해보았습니다.
•
Asana
하루비 프로젝트에서 이슈 관리 툴로 사용, 웹훅을 통한 협업 플로우를 구축한 경험이 있습니다.
Design
•
Figma
•
Protopie
•
Blender
Core Projects
럭키비키
개인 프로젝트 앱스토어 배포
부정적인 생각을 ChatGPT API를 이용해 초긍정적인 생각으로 바꿔주는 서비스
•
개발 기간: 2024.07 ~ 현재
•
기술 스택: SwiftUI, Combine, ChatGPTSwift, MVVM, Firebase Auth, Cloud Function, Firestore
•
개발 인원: 1인 개발
•
역할: 기획 / 디자인 / iOS 개발
프로젝트 요약
밈에서 영감을 받아 개발한 부정적인 생각을 초긍정으로 변환해주는 iOS 앱입니다. 이틀만에 기획/디자인/개발을 진행해 MVP 버전을 배포했습니다. SwiftUI를 활용한 빠른 MVP 개발에 중점을 두었으며, ChatGPT API 연동으로 AI 변환 기능을 구현했습니다. 배포 이후 MVVM 아키텍처와 DI Container를 도입한 리팩토링으로 유지보수성과 테스트 용이성을 확보하고, Firebase Auth와 Cloud Functions를 통해 인증 및 탈퇴 로직을 안정적으로 처리했습니다. 또한 애니메이션으로 인해 발생하는 프레임 저하 문제를 Combine을 통해 해결했습니다. 출시 6개월 후에도 누적 사용자 수 650명 돌파, DAU 30명, MAU 130명을 유지했습니다.
발생한 문제
사용자의 부정적인 생각을 ChatGPT API를 통해 긍정적으로 변환하는 과정에서 안정성과 빠른 개발 속도가 필요했습니다. 또한, 사용자별 응답 횟수 제한과 회원 탈퇴 처리 과정에서 Apple 계정 연동 해제와 같은 복잡한 요구 사항이 있었습니다. MVP 개발 시에는 빠르게 개발하기 위해 View 단일 구조로 개발했는데, 비즈니스 로직과의 결합도가 높아 유지보수가 어렵다는 문제가 있었습니다.
원인 분석
•
ChatGPT API를 직접 구현하는 대신, 유지보수가 잘 되는 라이브러리를 통해 개발 속도와 안정성을 높일 필요가 있었습니다.
•
Sign in with Apple을 통한 인증과 회원 탈퇴 시 Apple 계정 연결 해제를 서버 측에서 처리해야 하는 상황이 있었습니다.
•
View 내부에 UI와 비즈니스 로직이 혼재되어 유지보수성이 떨어졌습니다. 이를 해결하기 위해 아키텍처 를 도입할 필요가 있었습니다.
해결 방안 검토
•
ChatGPTSwift 라이브러리는 스트림 처리와 다양한 부가 기능을 제공하여 코드 가독성과 안정성을 높일 수 있었습니다.
•
Firebase Auth, Firestore, Cloud Function을 활용해 회원 인증 및 탈퇴 관련 복잡한 요구사항을 효과적으로 처리할 수 있었습니다.
•
MVVM 아키텍처는 UI와 비즈니스 로직을 분리할 수 있지만 SwiftUI의 단방향 데이터 흐름에는 어울리지 않는 경향이 있었습니다. 단방향 데이터 흐름에 맞도록 ViewModel의 구조를 유저 액션 중심으로 변경해 해결할 수 있었습니다.
•
뷰모델의 비즈니스 로직에 DB와 API 로직이 직접적으로 포함되어 재사용성이 낮아졌습니다. 서비스 레이어로 분리해 확장성을 향상시킬 수 있었습니다.
해결 과정
•
ChatGPT API 통합
◦
ChatGPTSwift 라이브러리를 도입하여 API 요청 및 응답 기능을 구현했습니다.
◦
이를 통해 스트림 처리와 가독성 높은 코드를 활용하면서 개발 속도를 높일 수 있었습니다.
•
사용자 응답 횟수 제한 및 탈퇴 처리
◦
Sign in with Apple과 Firestore를 사용해 사용자별 응답 횟수를 관리했습니다.
◦
회원 탈퇴 시 Apple 계정 연결 해제를 서버에서 진행하도록 Firebase Cloud Function을 사용했습니다.
◦
탈퇴 후 재가입 악용을 방지하기 위해 탈퇴 시점을 Firestore에 기록하고, 탈퇴 후 3일이 지나야 문서를 삭제하도록 주기적인 Cloud Function을 설정했습니다.
•
서비스 레이어 분리와 DI 적용
◦
AI, 저장소, 인증 기능을 Service 레이어로 분리하고 추상화하여 테스트/프리뷰가 용이하도록 했습니다.
◦
DI Container와 Mock Container를 도입해 의존성 주입 및 테스트/프리뷰 환경을 개선했습니다.
성과
•
출시 6개월 후에도 누적 사용자 수 650명을 돌파했고, DAU 30, MAU 130을 유지했습니다.
•
아키텍처의 도입과 서비스 레이어 분리를 통해 유지보수성과 테스트 용이성을 크게 향상시켰습니다.
•
성능 문제 해결로 사용자 경험을 개선하고 앱의 안정성을 높였습니다.
하루비
팀 프로젝트 앱스토어 배포
지출을 계획하고 하루 가용 금액을 계산해 계획적인 소비를 도와주는 서비스
•
개발 기간: 2024. 09 ~ 현재
•
기술 스택: SwiftUI, SwiftData, Clean Architecture + MVVM, Firebase Analytics
•
개발 인원: iOS 개발자 4명, UI/UX 디자이너 2명
•
역할: PM / iOS 개발
프로젝트 요약
2030 세대의 하루 가용 금액을 계산해 계획적인 소비를 도와주는 iOS 앱입니다. Apple Developer Academy @ POSTECH에서 진행한 마지막 프로젝트로, 팀원들을 직접 모집해서 팀을 구성했습니다. SwiftUI와 SwiftData, Clean Architecture + MVVM을 도입하여 복잡한 비즈니스 로직을 안정적으로 구현했습니다. Asana, Slack, GitHub 웹훅 연동을 통해 협업 프로세스를 자동화하고 이슈 관리 체계를 구축했습니다. 커스텀 캘린더 기능과 Firebase Analytics 적용을 통해 사용자 경험 및 데이터 분석을 개선했습니다. 복잡한 비즈니스 로직을 유지보수하기 쉽도록 앱 내 아키텍처와 도메인 모델 설계를 주도했습니다. 출시 초기 금융 카테고리 99위에 진입하고, 2500+ 다운로드, 2주간 DAU 300+를 기록하며 성공적인 론칭을 이루었습니다.
발생한 문제
사회초년생과 대학생이 예상 지출을 파악하고 계획적으로 소비하기 어려운 상황에서, 이를 지원할 수 있는 앱 개발이 필요했습니다. 또한 팀 프로젝트로 진행하면서 효율적인 협업 환경과 복잡한 비즈니스 로직 분리가 요구되었습니다.
원인 분석
•
초기 단계에서 협업 도구와 프로세스가 정립되지 않아 팀원 간 소통과 작업 효율에 어려움이 있었습니다.
•
지출 계산과 데이터 모델링이 복잡해 비즈니스 로직과 UI 분리, 테스트 가능한 코드 구조가 필요했습니다.
•
비즈니스 목적 상, 캘린더의 시작일이 1일뿐만 아니라 여러 일로 표시되어야 하기에 커스텀이 필요했습니다.
•
출시 이후 사용자가 많아지면서 사용자의 행동을 분석해 UX를 개선할 필요가 있었습니다.
해결 방안 검토
•
Notion, Asana, Slack, Github 등의 협업 도구를 도입해 초기 환경을 설정하고 자동화로 새로운 도구의 적응을 도와 생산성을 향상시킬 수 있었습니다.
•
Clean Architecture와 MVVM 아키텍처를 적용해 비즈니스 로직을 도메인 레이어의 유즈케이스로 분리하고 유지보수성을 높일 수 있었습니다.
•
커스텀 캘린더를 모듈화해 코드의 가독성을 높이고 유지보수성을 향상시킬 수 있었습니다.
•
Firebase Analytics와 같은 분석 도구를 도입해 사용자의 행동을 분석할 수 있었습니다.
해결 과정
•
협업 환경 구축
◦
협업 툴을 초기 세팅하고 Cloudflare Workers을 이용한 웹훅으로 협업 플로우를 자동화했습니다. 이를 통해 팀원들이 새로운 툴에 빠르게 적응하고 휴먼 에러를 줄여 생산성을 높일 수 있었습니다.
•
아키텍처 설계 및 기능 개발
◦
복잡한 계산이 많은 비즈니스 로직을 UI와 분리하기 위해 Clean Architecture를 지향하는 MVVM 아키텍처를 도입했습니다.
◦
도메인 레이어의 유즈케이스로 비즈니스 로직을 분리해 테스트 가능하고 가독성 높은 코드를 작성했습니다.
성과
•
MVP를 일정 내에 성공적으로 배포하여 앱스토어 금융 카테고리 95위에 진입하고, 2500+ 다운로드를 기록했습니다.
•
협업 환경 개선과 아키텍처 도입으로 팀 생산성과 코드 품질이 향상되었습니다.
•
모듈화된 캘린더 컴포넌트와 추상화된 분석 도구 구현을 통해 프로젝트의 유지보수성을 높이는 데 기여했습니다.
Other Projects
Presentation
지식 공유와 새로운 기술 도입, 협업 방법을 고민하고 제안하는 것을 중요하게 생각합니다.
이를 위해 팀원들에게 새로운 기술 및 도구를 소개하거나 협업 방법을 제안하는 발표 자료를 자주 준비합니다.
아래는 스터디와 프로젝트 진행 중 발표했던 자료들입니다.