일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- Quartz dependency
- reset
- 깃허브 연동
- 환경변수
- 깃허브 토큰 생성
- 깃허브 토큰 발급
- 배포 자동화
- AWS 생성
- firstChild
- EL1021E
- 자바 swing 프로젝트
- submit 기본동작
- CI/CD
- 되돌리기
- 배열 call by value
- 채팅 프로젝트
- .ppk
- Jenkins
- dbeaver 백업/복구
- Node Property
- 소프트웨어
- ..gitignore
- git 폴더 모으기
- Quartz 라이브러리
- 타임리프 참조 오류
- document 함수
- deploy.sh
- 테스팅
- 클래스 참조
- css 리셋
- Today
- Total
TY blog
여행일정 공유 APP 본문
영화예매 시스템에 이어 두 번째로 진행한
여행일정 공유 APP 프로젝트를 개발하면서 느낀 점에 대해 적어보려 합니다.
1. 기능 구성
- 로그인, 회원가입
- 여행 그룹 관리
- 그룹을 만든 사람이 그룹장이 된다.
- 그룹장은 가입 신청한 그룹원을 심사할 수 있다.
- 그룹장만 여행계획을 수정할 수 있다.
- 그룹 채팅기능
- 일정계획
앱에 취지는 간단하게 여행을 같이할 그룹을 만들어 그룹과 일정을 소통하며 계획을 세우는 어플로 일정계획과 채팅이 핵심기능인 어플입니다.
2. 프로젝트 개발 언어
- Client : Android Studio
- Server : Java 8 Socket
- DB : MYSQL
Client는 Android로 개발하였고, 자바는 8 버전의 소켓으로 통신하는 서버를 하나 구축하여 개발을 진행했습니다.
3. 그룹채팅
서버에 사용자 채팅요청이 오면 Thread를 생성해서 메시지를 받아 그룹별로 속해있는 클라이언트에게 메시지를 실시간으로 구별하여 출력할 수 있게 구현하였습니다.
4. 인/아웃바운드 정책
프로젝트를 개발하면서 클라이언트에서 서버로 데이터를 요청하는 부분에서 Connection timeout 오류를 자주 봤었고 클라이언트 - 서버에서 통신이 왜 안되고 있는지 고민을 많이 했던 경험이 있었는데 결론부터 얘기하면 서버 측에서 허용되지 않은 IP에 대한 방화벽 정책 문제였고 인바운드 IP를 허용하는 순간 문제가 해결되면서 이러한 경험을 통해 개발 이외에 방화벽 같은 보안적인 요소도 고려해야 한다는 생각을 가지게 되었습니다.
5. 완성
정보를 기입한 후 회원가입 완료 버튼을 누르면 소켓 서버로 요청하여 회원을 저장합니다.
로그인 이후에 우측 상단에 메뉴바를 통해 추천인코드를 통한 요청이나
그룹 생성, 로그아웃을 할 수 있습니다.
그룹은 이름만 지정하면 그룹코드가 같이 생성됩니다.
이 그룹 코드를 통해 다른 사용자는 그룹에 들어올 수 있습니다.
대기 중인 그룹은 빨간색 줄로 표시됩니다.
그룹원을 승인, 거절할 수 있으며 캘린더에 일정을 추가할 수 있습니다.
채팅 시 그룹에 속해있는 모든 그룹원에게 메시지를 전송합니다.
총 3개월 정도 진행했고, 카카오톡과 같은 채팅과 일정관리 기능을 구현하면서
완벽하진 않더라도 클라이언트 - 서버에 대해 이해하는 계기가 되었고
내가 만든 앱을 핸드폰에 실행시키는 즐거움으로 개발에 진행한 것 같습니다.