1. 산책하기
- 산책 시작을 눌러 경로/거리/시간을 기록한다.
- 산책완료 후 자신의 기록을 모아볼 수 있다.
2. 방명록
- 산책도중 해당 위치에 글과 사진을 남길 수 있다.
- 사용자는 자신의 100m 내의 방명록만 무료로 읽을 수 있다.
- 방명록에는 댓글/좋아요가 가능하다.
3. 피드
- 하나의 산책도중 남겨진 방명록을 피드라고 한다.
- 사용자가 남긴 방명록을 실시간으로 볼 수 있다.
- 방명록의 사진만이 보이고 모든 내용을 보기 위해서는 포인트를 이용해야한다.
- 혹은 '보러가기' 기능을 통해 해당 방명록으로 산책을 나갈 수 있다.
4. 경로 공유
- 자신의 산책 기록 중 마음에 드는 경로는 공유할 수 있다.
- 사용자든 타인의 경로를 보고 따라가기 기능으로 따라갈 수 있다.
- 따라가기 활성화시 해당 경로를 지도에 오버랩 시켜준다.
- 얼마나 많은 사람이 해당 경로를 따라갔는지 카운트를 세어준다.
5. 모여라
- 사용자는 특정 위치에서 모집인원/모집시간/내용을 작성해 사람을 모을 수 있다.
- 모여라 참여자는 특정 거리에 다가와 참여확정을 눌러 모임에 참여할 수 있다.
6. 마이페이지
- 아바타 변경, 작성글 목록 등 활동 이력 관리 기능을 담당한다.
7. 업적
- 사용자가 활동한 이력을 기반으로 업적을 부여합니다.
- 산책/모여라/방명록/이벤트 등에 대한 참여 지표를 기준으로 업적을 부여한다.
8. 기록 요약
- 자신의 월간 기록과 상세 기록을 볼 수 있다.
- 자신의 기록을 "경로 공유" 페이지에 공유할 수 있다.
[기획/설계]
- 정석적 기술 설계 절차에 따른 서비스 기획
- 기존 데이터 중심 DB 설계가 아닌, 서비스 중심 도메인 설계를 진행
[Infra]
- 각 DB와 서비스가 독립적인 물리 공간을 차지하도록 배포
- 서비스 단위 빌드 및 배포 진행
- 모든 DB(Redis, Milvus)와 Docker Container에 대한 GUI 컨트롤러 지원
- 역할에 따른 AWS IAM 권한 계정 생성 후 지급
- 모든 서비스 도메인 연결 완료
- 9개의 서비스에 대한 자동 배포 및 헬스체크
[Backend]
- Hexagonal Architecture 기반의 유연한 Microservice 구현
- API Gateway, Service Discovery를 구현하여 부하 분산 및 확장성 추구
- request sanitization을 이용한, API 호출 프로세스 개선
- Vector DB를 사용하여, 부하가 큰 API에 대한 성능 개선
- 추후 작성
[Frontend]
- React Native를 이용한 모든 모바일 기기 지원 (iOS, Android)
- 리엑트 쿼리 전역적 관리 통일/재사용 사이드 이펙트 능동적
- zustand를 통해 가볍고 빠른 전역 데이터 저장 및 조회
- 중요한 유저 정보는 암호화 하여 저장
connectus
├── android
│ ├── app
│ │ └── src
│ │ ├── debug
│ │ └── main
│ │ ├── assets
│ │ │ └── fonts
│ │ ├── java
│ │ │ └── com
│ │ │ └── connectus
│ │ └── res
│ │ ├── drawable
│ │ ├── mipmap-hdpi
│ │ ├── mipmap-mdpi
│ │ ├── mipmap-xhdpi
│ │ ├── mipmap-xxhdpi
│ │ ├── mipmap-xxxhdpi
│ │ └── values
│ └── gradle
│ └── wrapper
├── assets
│ └── fonts
├── ios
│ ├── connectus
│ │ └── Images.xcassets
│ │ └── AppIcon.appiconset
│ ├── connectusTests
│ ├── connectus.xcodeproj
│ │ └── xcshareddata
│ │ └── xcschemes
│ └── connectus.xcworkspace
│ └── xcshareddata
├── src
│ ├── api
│ │ └── queries
│ ├── assets
│ │ └── markers
│ ├── components
│ │ ├── buttons
│ │ ├── containers
│ │ ├── event
│ │ ├── feed
│ │ ├── map
│ │ ├── my
│ │ ├── share
│ │ └── text
│ │ ├── body
│ │ ├── display
│ │ ├── headline
│ │ ├── label
│ │ └── title
│ ├── constants
│ ├── contexts
│ ├── hooks
│ ├── navigations
│ │ ├── root
│ │ ├── stack
│ │ └── Tabs
│ ├── screens
│ │ ├── auth
│ │ ├── event
│ │ ├── feed
│ │ ├── map
│ │ │ └── BottomSheet
│ │ ├── my
│ │ └── share
│ ├── store
│ ├── style
│ ├── types
│ └── utils
└── __tests__
cd frontend/connectus/
npm ci
빌드 결과물인 앱 번들 (.aab
) 파일을 .apks
파일로 변환하는 데 Bundletool을 사용합니다
npx --yes react-native build-android --mode release
bundletool build-apks \
--bundle android/app/build/outputs/bundle/release/app-release.aab \
--output build/app-release.apks \
--mode universal \
--ks android/app/debug.keystore \
--ks-key-alias androiddebugkey \
--ks-pass pass:android
unzip -d "build" "build/app-release.apks" universal.apk
universal.apk
를 설치합니다
adb install build/universal.apk
순번 | 동작 |
[1] | 클라이언트의 접근, Spring Cloud Gateway를 이용해 모든 요청에 대한 단일 진입점을 노출하였습니다. |
[2] | Gateway는 Eureka 서비스에 요청 |
[3] | 사용자의 접근 주소를 기준으로 선언 파일을 참조하여 접근할 Microservice에 대한 정보(포트 및 주소)를 반환 |
[4] | Gateway는 반환받은 정보를 통해 최종적으로 서비스에 접근 |
구성 | 역할 |
Spring Cloud | 분산 시스템을 구축하고 운영하기 위한 일련의 프레임워크와 라이브러리를 제공 |
Netflex Eureka | Microservice들의 주소, 포트, 연결 설정 값에 대해 정의하고 등록함 |
Spring Boot | 각 Microservice에 대해 작성 |
번호 | 서비스명 | 포트 | 비고 |
1 | apigateway | 8000 | 8761 |
2 | discovery | 8761 | api.connectus.social:8761 접근 시 탐색된 서비스 정보 확인 가능 |
3 | post | 8101 | 방명록 |
4 | gather | 8102 | 모여라 |
5 | spot | 8103 | 위치 |
6 | chat | 8104 | 채팅 |
7 | event | 8105 | 이벤트 |
8 | walk | 8106 | 산책 |
9 | user | 8107 | 유저 |
10 | likes | 8108 | 좋아요 |
Hexagonal Architecture 이용에 따라 복잡한 구조를 지니게 됩니다.
├─java
│ └─social
│ └─connectus
│ └─location
│ ├─application
│ │ └─rest
│ │ ├─controller
│ │ ├─request
│ │ └─response
│ ├─common
│ │ ├─config
│ │ ├─customannotations
│ │ └─type
│ ├─domain
│ │ ├─command
│ │ ├─model
│ │ ├─ports
│ │ │ ├─inbound
│ │ │ └─outbound
│ │ └─services
│ └─infrastructure
│ ├─mariadb
│ │ └─repository
│ └─milvus
└─resources
독립 네트워크를 가진 DB 환경 조성 및 MSA 서비스 빌드
항목 | 세부설명 | 참조 |
독립 공간의 구동 |
8개의 DB에 대해 각 포트로 구분하여 구동함 9개의 Spring Boot 서비스에 대해 포트로 구분되어 구동함 모든 서비스를 container 내부에서 동작시킴으로 서비스를 격리하였음 |
참조1 |
서비스 관리/감독 |
모든 DB(Maria, Redis, Milvus)와 Docker Container에 대한 시각화 및 GUI 컨트롤러 지원 |
참조1 참조2 |
AWS 권한별 계정 지급 |
역할에 따른 AWS IAM 권한 계정 생성 후 지급 | 참조1 |
전 서비스 도메인 접근 |
서비스 다운로드, Jenkins, DB, Spring 등에 대해 모두 도메인 부여 | 참조1 |