프로젝트: 공유 킥보드 면허 인증 시스템
공유 킥보드는 현대 도시에서 매우 인기 있는 교통수단입니다. 하지만 이와 함께 남의 면허증을 도용하거나, 면허 인증 없이 킥보드를 사용하는 문제들이 빈번하게 발생하고 있습니다. 저희 팀은 이러한 문제를 해결하기 위해 면허 인증 시스템을 도입한 공유 킥보드 관리 플랫폼을 개발했습니다.
1. 프로젝트 개요
- 문제점: 사용자가 남의 면허증을 도용하여 가입하거나, '나중에 면허 인증하기' 옵션을 선택해 면허 인증 없이 킥보드를 사용하는 사례가 많습니다.
- 해결 방법: 회원가입 시 면허 인증을 강제하여, 사용자 정보와 면허 정보를 일치시키고 면허 도용을 방지하는 시스템을 구축했습니다.
2. 시스템 기능
- 회원가입 절차:
- 회원 정보 입력: 사용자는 이름, 생년월일, 전화번호 등 기본 정보를 입력합니다.
- 인증번호 발송: 입력된 전화번호로 인증번호가 발송되며, 이를 입력해 가입을 완료합니다.
- 면허 인증: 가입 후 즉시 면허증을 업로드하도록 하며, API를 통해 면허증의 진위 여부를 확인합니다.
- 면허증 OCR 및 데이터 매칭:
- 면허증 사진을 찍거나 업로드하면, OCR(광학 문자 인식) 기술을 사용해 텍스트 데이터를 추출합니다.
- 추출된 면허 정보(이름, 면허 번호 등)가 데이터베이스에 저장된 회원 정보와 일치하는지 확인합니다.
- 일치하면 면허 인증에 성공하고, 면허 도용 방지가 가능합니다.
3. API와 데이터 처리
- 진위 여부 확인: 면허증이 실제 존재하는지 여부를 정부 인증 API를 통해 확인합니다.
- OCR: 면허증에서 이름, 생년월일, 면허 번호를 추출하고 이를 데이터베이스의 회원 정보와 비교합니다.
- 데이터베이스: 모든 사용자 정보와 면허 정보를 안전하게 관리하고, 인증된 사용자만 공유 킥보드를 사용할 수 있도록 합니다.
4. 프로젝트 구현 과정
- 모바일 앱: 사용자 친화적인 UI를 통해 회원가입과 면허 인증 절차를 간단하게 구현했습니다.
- 서버 연동: Flask를 기반으로 서버와의 통신을 처리하며, Retrofit 라이브러리를 사용해 면허 인증 API와 연동했습니다.
5. 기대 효과
- 안전한 공유 킥보드 사용: 무면허자나 면허 도용자의 접근을 차단하여 킥보드 사용의 안전성을 높입니다.
- 신뢰성 강화: 면허 인증 절차를 강제함으로써 서비스 신뢰도를 높이고, 사용자 개인정보 보호를 강화합니다.
6. 결론
이 프로젝트를 통해 공유 킥보드 사용자의 면허 인증을 체계화하고, 면허 도용 문제를 해결할 수 있는 방안을 제시했습니다. 향후, 더 많은 교통수단에 이 시스템을 적용하여 공공 안전을 강화할 수 있을 것입니다.
프로젝트에서 내가 맡은 역할: 안드로이드 UI 및 서버 연동
이번 프로젝트에서 저는 안드로이드 스튜디오를 사용하여 앱의 UI 제작과 서버와의 통신을 담당했습니다. 서버는 팀원들이 Flask로 구축했으며, 저는 이를 기반으로 클라이언트와 서버 간의 프론트엔드 및 백엔드 통신을 구현했습니다. 아래는 제가 맡은 주요 작업 내용입니다.
1. 안드로이드 스튜디오를 사용한 UI 설계
- 회원가입 화면: 사용자가 기본 정보(이름, 생년월일, 전화번호)를 입력하는 UI를 제작했습니다. 이 화면은 사용자 친화적으로 구성하였으며, 입력 필드와 인증번호 발송 버튼을 직관적으로 배치하였습니다.
- 면허 인증 화면: 회원가입 후 면허증을 업로드하는 화면을 설계했습니다. 면허증 촬영 기능과 갤러리에서 이미지를 선택할 수 있도록 두 가지 방법을 모두 제공했습니다.
- UI 요소들: Material Design을 기반으로 하여 앱의 일관된 디자인을 유지하고, 버튼, 입력 필드, 알림 메시지 등의 UI 컴포넌트를 효과적으로 구성했습니다.
2. Retrofit을 활용한 서버 통신
서버와의 통신은 Retrofit 라이브러리를 사용하여 구현했습니다. Retrofit은 간단한 API 호출과 JSON 데이터를 처리하기에 적합한 라이브러리로, 서버와의 데이터 전송 및 수신을 쉽게 관리할 수 있었습니다.
- 회원가입 정보 전송: 사용자가 입력한 회원 정보는 Flask 서버로 POST 요청을 통해 전송되었습니다. 이때 입력된 전화번호로 인증번호가 발송되고, 서버는 성공 여부를 응답으로 보내주었습니다.
- 면허증 업로드: 사용자가 면허증을 촬영하거나 갤러리에서 선택하면, 해당 이미지 파일을 서버로 전송하였습니다. 이 과정에서 사용자 ID와 면허증 정보도 함께 전송되어 서버에서 사용자 인증이 이루어졌습니다.
- 응답 처리: 서버로부터의 응답 값에 따라 UI가 동적으로 변경되도록 설정했습니다. 예를 들어, 면허 인증이 성공하면 다음 단계로 진행하고, 실패하면 사용자에게 오류 메시지를 표시했습니다.
3. 주요 기술 및 방법
- Retrofit 사용: RESTful API와 통신할 때 Retrofit을 사용하여 서버와 JSON 데이터를 주고받았습니다. 이 라이브러리를 사용해 통신이 빠르고 안정적으로 이루어졌습니다.
- Gson: 서버로부터 받은 JSON 데이터를 파싱하기 위해 Gson을 사용했습니다. 이를 통해 서버 응답을 쉽게 객체화하여 처리할 수 있었습니다.
- 비동기 처리: 네트워크 요청은 비동기 방식으로 처리되어, UI가 멈추지 않고 사용자가 원활하게 앱을 사용할 수 있었습니다.
4. 도전과 해결 과정
이 프로젝트에서 제가 맡은 부분은 서버와의 통신 연동에서 발생하는 다양한 문제들을 해결하는 것이었습니다.
- 타임아웃 문제: 초기에는 서버 응답이 느리면 앱이 중단되는 문제가 있었습니다. 이를 해결하기 위해 Retrofit의 타임아웃 설정을 조정하고, 실패 시 재시도 기능을 구현했습니다.
- 이미지 전송 문제: 처음에는 이미지 파일을 비트맵으로 변환해 전송하려 했지만, 화질 저하 문제가 발생하여 파일 자체를 전송하는 방식으로 변경했습니다. 이를 통해 고화질 이미지 전송이 가능해졌습니다.
5. 결과 및 성과
이 프로젝트를 통해 저는 안드로이드 UI 설계와 서버와의 통신을 모두 성공적으로 구현하였습니다. 특히 Retrofit을 활용한 서버 연동 부분에서는 안정적인 데이터 전송과 응답 처리에 중점을 두었고, 이를 통해 사용자 경험을 개선할 수 있었습니다. 이번 경험은 제게 모바일 앱 개발 및 서버 통신에 대한 중요한 경험이 되었으며, 실제 서비스에 적용할 수 있는 실용적인 기술을 익히게 되었습니다.
느낀점 : 처음으로 경험한 모바일 앱 개발
이번 프로젝트에서 저는 모바일 앱 개발을 처음으로 경험했습니다. 그 과정에서 안드로이드 스튜디오라는 개발 툴을 처음 사용했고, 서버와의 통신을 위해 다양한 기술을 새롭게 배웠습니다. 특히, 아래의 기술들을 이번 프로젝트를 통해 처음 익혔습니다.
1. 안드로이드 스튜디오 사용
- 첫 경험: 안드로이드 스튜디오는 처음 사용해보는 개발 환경이었지만, UI 설계부터 서버 통신 연동까지 모든 기능을 활용할 수 있었습니다. 처음에는 낯설었지만, 프로젝트를 진행하면서 자연스럽게 익숙해질 수 있었습니다.
2. Retrofit 라이브러리로 서버 통신
- 서버 연동: Retrofit 라이브러리는 처음 사용해보았지만, 이를 통해 서버와의 데이터를 손쉽게 주고받을 수 있었습니다. API를 활용하여 사용자 데이터를 전송하고, 서버의 응답을 받아 처리하는 경험은 저에게 큰 도전이었습니다.
3. Gson을 사용한 데이터 파싱
- JSON 데이터 처리: 서버로부터 응답받은 JSON 데이터를 효율적으로 처리하기 위해 Gson 라이브러리를 처음으로 사용했습니다. 이를 통해 서버에서 받은 데이터를 안드로이드에서 쉽게 파싱하여 UI와 연결하는 방법을 배울 수 있었습니다.
4. API 활용
- API 활용 능력: 프로젝트를 통해 다양한 API를 사용해봤습니다. 특히 면허 인증을 위한 API를 활용하면서 외부 시스템과 연동하는 방법을 처음 경험했고, 이를 성공적으로 구현해냈습니다.
'K쉴드 주니어 수업 정리' 카테고리의 다른 글
동적 권한 관리(1) - 사용자 활동 모니터링 - ssh 로그인 탐지 편 (0) | 2024.10.16 |
---|---|
진단 실습 - 웹 취약점 (1) | 2024.10.04 |
진단 실습 (2) | 2024.09.28 |
유닉스 보안 진단 가이드: 항목별 설정 체크 (1) | 2024.09.16 |
프로젝트 주제 선정과정 (0) | 2024.09.01 |