Skip to content

boostcampwm2023/iOS10-OpenList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

2023.10.17 ~

Content


소개영상

openlist.mp4

주요기능

image

AI

체크리스트 작성이 어려운 사람들을 위해 AI 추천기능을 구현하였습니다.

GPT-4를 이용한 체크리스트 캐싱 시스템, CLOVA Studio를 이용한 평가 시스템을 도입하여 빠르고 정확한 정보를 제공합니다.

체크리스트 작성을 위해 카테고리를 선택해주세요 선택된 카테고리로 AI가 체크리스트를 추천해줘요 AI가 추천한 목록들로 개인 체크리스트를 만들어요

동시편집!

여러명과 동시에 체크리스트를 작성하기 위해 동시편집 기능을 구현하였습니다.

동시편집은 CRDT 알고리즘 중에 RGATreeSplit 방식을 채택하였습니다.

개인 체크리스트를 함께 작성하도록 변경할 수 있어요 친구를 초대하여 체크리스트를 같이 작성할 수 있어요 동시편집시 현재 편집중인 친구의 위치를 알 수 있어요
  • 🔗 서버 다중화: Redis의 Pub/Sub 모델을 활용하여 서버 다중화를 구현하고, 효율적인 트래픽 분산 및 높은 확장성을 실현했습니다.

  • 🔄 실시간 데이터 스트리밍: 앱에서는 CRDT를 활용하여 실시간으로 체크리스트를 업데이트하고, 서버는 Redis의 list 자료구조를 이용해 데이터 어레이를 모두 유지하여 사용자의 연결의 끊어져도, 문서에 대한 실시간 최신 상태를 유지합니다.

  • 응답 시간 최적화: DB에서 카테고리별로 캐싱된 데이터를 활용하여 Clova Studio API 응답 시간을 단축했습니다.

  • 🛠 캐싱 파이프라인: Pipe & Filter 아키텍처를 적용하여 순차적 데이터 처리와 Redis Pub/Sub을 통한 효율적인 데이터 관리를 구현했습니다.

이미지

  • 📊 실시간 모니터링: 프로덕션 환경에서 서버 상태를 모니터링하고 장애를 신속하게 관리할 수 있는 관리자 페이지를 구축했습니다.

  • 📈 데이터 관리 및 로깅: Redis를 통해 시스템 로그를 관리하고, 캐싱 데이터 생성 및 평가 파이프라인을 트리거할 수 있는 기능을 통합했습니다.

스크린샷 2023-12-15 오전 2 13 03
admin-page.mp4

기술 스택

iOS

Xcode macOS

Minimum Target UI Framework Async Framework Architecture

Others Open Source

💻 서버

NestJS TypeScript

PostgreSQL TypeORM Redis

CLOVA Studio GPT-4

Docker GitHub Actions Nginx Ncloud



아키텍처

iOS 아키텍처

IOS 아키텍처-버터플라이아키텍처

서버 아키텍처

서버 아키텍쳐

프로젝트 문서

iOS

기술 문서

번호 제목 키워드
1 CRDT vs OT CRDT
2 왜 RGATreeSplit 방식을 채택하였나? CRDT
3 ID 부여 방식 CRDT
4 Tree 방식에서 밸런싱 CRDT
5 자소분리 문제 해결과정 CRDT
6 딥링크로 체크리스트 초대하기 딥링크
7 프레임워크 vs 라이브러리 모듈
8 소켓통신: Any와의 싸움 소켓

의사결정 기록

제목 키워드
[ADR] 아키텍처 의사 결정 기록: iOS 애플리케이션 아키텍처 채택하기 ADR
[ADR] 아키텍처 의사 결정 기록: SwiftLint 채택 ADR
[ADR] 아키텍처 의사 결정 기록: UI 영역에서 Combine 사용 결정 ADR
[ADR] 아키텍처 의사 결정 기록: Presentation영역의 ViewModel에서 Input Output 패턴 도입 결정 ADR
[ADR] 아키텍처 의사 결정 기록: 코디네이터 패턴 도입 결정 ADR
[ADR] 아키텍처 의사 결정 기록: 로컬 스토리지로 코어 데이터 사용 결정 ADR
[ADR] 아키텍처 의사 결정 기록: Custom Network Foundation 라이브러리 구현 및 모듈화 결정 ADR
[ADR] 아키텍처 의사 결정 기록: 웹 소켓을 뷰 컨트롤러에서 연결하도록 변경 ADR

BE

기술 문서

번호 제목 키워드
1 vpc 설정 feat. 서브넷 마스킹 vpc
2 public, private 서버 인스턴스 생성 서브넷
3 private 서버 인스턴스 NAT 게이트웨이 생성 NAT
4 로컬에서 ssh tunneling을 통한 private 인스턴스 속 postgresql 서버 접속 ssh tunneling postgresql
5 github actions와 docker를 통한 nest 서버 배포 github actions docker CI/CD
6 Logger 설정 - winston middleware to interceptor Logging Winston
7 apple login OAuth Apple Login
8 NestJS 서비스에서 CLOVA Studio API 연동 CLOVA Studio API
9 Pipe & Filter 아키텍처와 인공지능 데이터 캐싱 Redis Pub/Sub

TEAM

S006 S008 S021 J050 J080
김성훈 김영균 위성철 박민성 양동석
iOS iOS iOS Backend Backend