동의대학교 봉사활동 안드로이드 어플 런칭
포스트
취소

동의대학교 봉사활동 안드로이드 어플 런칭

개요

옛날에 교수님이 안창마을과 위험지역을 사진을 찍어서 위험 지역 알림 서비스를 개발 하고자 하셨다. 하지만 그게 잘 안됐는지 다른 분야로 변경 하셨고, 그것이 동의대학교 봉사활동 어플리케이션이다. 봉사활동 어플리케이션은 안창마을 위험지역 알림 서비스와 큰 다른점은 없고, 이름과 사진만 다른 서비스이다. 봉사활동 어플리케이션은 사진을 찍어서 해당 위치에서 어떤 봉사활동을 했는지 기록하는 서비스로 사용이 된다고 하셨다. 그렇게 개발을 한지 1년이 지났다.

개발

처음 개발 할 때는 안드로이드에 대해서 개념이 전혀 없었고, 지도 API에 관해서 알아본 적이 없었다. 하지만 교수님께서 하다가 던지신건지, 석박사생분 께서 하셨는지는 잘 모르겠지만… 코드가 일부분은 작성이 되어 있었다. 그 덕에 안드로이드의 xml 구조나, 안드로이드 문법을 새롭게 공부를 하지 않아도 괜찮은 상황이였다. 교수님의 요청은 아래와 같았다.

  1. 현재 사용한 지도 API에서 그려지지 않는 문제를 해결해 달라.
  2. 개인 서버와 통신하여 데이터가 저장이 되도록 만들어 달라. (SQL 서버.)
  3. 안에 들어 있는 코드 최적화와 몇몇의 버그를 수정해 달라.

처음 안드로이드 어플을 개발 하는것이지만 난이도는 비교적 많이 쉬웠다. 와! 서버만 개발하면 모든게 끝나고, 내부 알고리즘은 코드만 수정하면 되니 gui나 지도 api 부분은 이미 완성이 되어있었기 때문이다. 정말 좋은 상황이였다.

코드 개발 및 수정은 비교적 쉬웠었고, 서버는 간단하게 APM(Apache, Php, MariaDB)를 활용하였다.

데이터베이스 구조

놀랍다! 와! 데이터베이스 구조는 처음부터 설계가 되어 있었고, 해당 기반을 기준으로 개발을 하였다. database
[데이터베이스 구조]

데이터는 정말 간단하며 심플하게 구성이 되어있다.

1
2
3
4
5
6
7
8
9
identify    : 고유 번호
latitue     : 위도
longitude   : 경도
type        : 위험 지역 종류
title       : 제목
description : 세부 상세 내용
imagePath   : 이미지 파일 이름
imageUrl    : 로컬 파일 경로 [왜인지 모르겠지만 저장 했음.]
addedDate   : 데이터가 추가가된 날짜

위도와 경도는 위치를 나타내기 위한 요소이며, 위험 지역 종료는 과거 안창 마을에서 위험 정보가 있었고, GUI에도 적용이 되어 있었기 때문에 데이터베이스를 변경하지 않고 그대로 가져왔다. 그 외의 요소는 지역 태그를 저장하기 위한 요소로 사용이 된다.

개발 완료 모습

어플리케이션을 개발 하였고, 다음 지도 API(현재는 Kakao Map)를 활용하여 지도를 렌더링을 하였다. 그 외에는 지도와 데이터 필터링 기능, 데이터 추가 기능, 이미지 보는 기능 등 다양한 기능이 있다. 자세한 기능은 아래의 링크를 통해 직접 설치가 가능하다. 구글 플레이스토어의 정책에 따라 최소 Android 조건이 변경이 되어서 6.0으로 최소 지원 범위로 개발을 하였다.

봉사 어플 로고인앱 화면
봉사 어플
[어플 로고]
android launching
[인앱 화면]

어려웠던 점.

아무래도 처음 안드로이드 어플을 만드는 작업이다 보니 다양한 어려움이 있었다. Kakao Map API를 사용 할 때 네이티브 키를 등록하는 것은 쉬웠으나 내부적인 업데이트로 키값으로 지도나 API를 호출 하더라도 응답을 않았다. 그 이유는 Kakao API에서 어플의 Key Hash값을 입력 해야만 동작 하도록 되어 있었던 것이다. 어플리케이션을 디버깅 모드에서는 정상적으로 동작하지만 빌드를 하거나, 구글 플레이 스토어에 등록을 하면 다른 키 해쉬값을 가지게 되면서 해결하는 방법을 찾는것이 어려웠다.

그리고 서버 개발을 할 때 호스팅 업체를 이용을 하다가 온프레미스 서버로 옮겨지고, 컴퓨터의 서버 IP가 바뀌거나 학교에 정전이 생기게 되면서 물리적인 문제를 해결까지 해야하는 것이 많이 어려웠다 ㅠㅠ…. 서버를 옮기는 것이 많이 번거롭고 귀찮은 작업이다 보니 도커로 만들어서 배포를 편하게 만들었다. 아무래도 서버가 계속 바뀌고, PHP의 버전이 바뀌게 되면서 POST 값을 가져오는 방식이 바뀌게 되면서 이전에는 정상적으로 잘 동작했는데 어떤게 문제인지 찾는지 어려웠다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

학과 동아리방 서버 구축 및 설계

Cloudflare의 API 활용하여 서브도메인의 SSL 인증서와 DNS 관리