2022년 1학기: PHP로 만든 SNS 프로젝트, My thought

웹 페이지와 서버를 이해할 수 있는 좋은 기회가 되었던 나만의 SNS 프로젝트

[Github 저장소 바로가기]

[관련 블로그 글 보기]

[연구실 들어가서 가장 먼저 하게 된 ‘안드로이드 + PHP 프로젝트’]

2021년 6월부터 저는 전남대학교 증강/가상현실 연구실에 머무르며, 2학년 2학기부터 교수님의 밀착지도를 받게 됩니다. 동시에 어떤 프로젝트에도 참여하게 되었는데, 제가 얼마 전까지 사용해봤던 안드로이드를 활용하는 프로젝트였습니다. 사실상 저는 대충 독학하며 배운 거라 좀 그렇긴 하지만, 그래도 상관없다고 하니…

해당 프로젝트는 일종의 게시판 같은 걸 만드는 거였습니다. 이 과정에서 제가 앞서 버스 앱 만들며 맛보기로 확인했던 mySQL을 사용하고, 그 데이터를 갖고 오는 데에 PHP라는 언어를 쓴다는 사실을 알게 됩니다. 결국 저는 이 프로젝트를 통해 데이터베이스 관련 지식과 PHP 언어도 간단하게 익히게 되었죠. 그렇게 안드로이드 + PHP 프로젝트를 몇 달 동안 수행하게 되었습니다.



[그렇게 맞이한 데이터베이스 수업과 프로젝트]

그렇게 간단한 PHP 경험을 쌓은 이듬해 1학기, 데이터베이스 수업을 제대로 듣게 되었습니다. 그러면서 조금 더 복잡한 쿼리도 이해하게 되었고요. 과제도 몇 차례 수행하게 됩니다. 그런데 기말 최종 과제가, 간단한 데이터베이스 활용 프로젝트를 수행하는 것이었습니다. 관계형 DB 테이블을 5개 이상 사용하는 웹 애플리케이션을 제작하는 것이었습니다. 흐음. 뭘 만들어야 하지…? 깊은 고민에 빠졌습니다.

그러다가 작년에 진행했던 PHP 프로젝트가 떠올랐습니다.

비슷한 것 같은데… 이왕 하는 거 PHP를 활용해볼까…?

그게 결국 데이터베이스를 활용하는 거니까, 그때의 기억을 살린다면 잘 마무리지을 수도 있겠다는 생각이 들었습니다. 다만, 완성도가 있으려면 나름 쓸모 있게 만들 필요가 있었고, 가장 쉽게 떠올릴 수 있는 건 SNS였습니다. 그러나 사진이나 영상을 첨부하는 수준은 좀 어려울 것 같고, 초창기 트위터처럼 텍스트 메시지만 올릴 수 있게끔 해도 괜찮을 것 같았습니다. 실제 그림은 아니지만 자신을 대표하는 이미지를 표시해주기 위해, ‘이모지’를 활용하기로 했습니다. 이렇게 이모지를 포함해서 사용자에 관한 데이터베이스 테이블을 구축하고, 하나씩 추가해나갔습니다.

그런데, 실제로 시연을 해야 할 뿐 아니라 외부에서도 접속할 수 있게 만들어야 한다는 문제가 있었습니다. 이를 위해서는 로컬 서버보다는 외부에 공개된 AWS 같은 상용 서버가 필요합니다. 알아보니 다 유료고 AWS가 1년 기간제로 무료로 기본형을 사용할 수 있게 해주길래(…) 그거를 하나 열어서 우분투를 설치하여 웹 서버로 활용했습니다. 이 과정에서 mySQL을 비롯하여 몇 가지 패키지도 설치했습니다.

웹 페이지의 디자인은, 과거 홈페이지 프로젝트의 경험을 살려, 직접 css 코드를 입력하여 완성했습니다. 여전히 웹 라이브러리를 몰랐기 때문에요… 예전에 만들어둔 것을 참고하여 새롭게 디자인하고 최대한 어색하지 않게 만들었습니다. 확실히 직접 짜니까 로딩 속도는 정말 빠르더군요.

그렇게 약 1달의 시간이 지났습니다.

나름 그럴싸한 결과… 하지만

프로젝트 결과물의 자세한 내용과 시연 영상은 아래에서 확인하실 수 있습니다.

여러 차례의 테스트를 거치고 시간도 많이 투자해가며 꽤 지치긴 했지만 재미는 있었고 나름 멀쩡하게 잘 작동하는 SNS가 완성되었습니다. 하지만 상용 SNS에 비교할 것은 아니고, 제가 구상했던 모든 기능이 들어가지는 못했습니다. 최종 발표 영상(위)을 녹화한 후 스스로에게 토닥토닥해주었습니다.

그런데 가장 아쉬운 점. 만약 개인 서버가 있었다면 저는 이 서비스를 유지해볼까 하는 생각도 잠깐 들었는데요, 아쉽게도 AWS 무료 체험 기간이 1년에 불과해 결국은 서버를 닫아야 하는 문제가 있었습니다. Github는 정적 페이지만 지원하기 때문에 여기 올린다고 동적으로 작동하지도 않고요. 그래서 1학기 성적을 받을 때까지 기다린 후에, 7월 쯤에 서버를 닫고 더 이상의 과금이 되지 않도록 정리합니다.

이렇게 저의 AWS 1년 무료 이용권이 캡스톤을 앞두고 날아갑니다(…)



그래도 이 프로젝트를 통해서 웹 서버의 동작 원리를 더 잘 이해하고, 데이터베이스 관련 도구(mySQL, phpMyAdmin 등)의 사용법도 익히고, 웹 지식(HTML, CSS, JS)도 확장해볼 수 있는 유익한 시간이 되었던 것 같습니다. 사실 들인 노력에 비해서는 그렇게 큰 성과로 돌아온 건 아니지만, 지금 시점 기준으로 이 프로젝트가 저의 마지막 Low-level(?) 프로젝트이고, 이 이후로는 Unity를 본격적으로 사용하게 됨으로써 세세하게 밑바닥부터 쌓아올린다는 느낌은 없어졌습니다. 이런 거 만드는 게 쉽지만은 않았지만 그래도 흥미롭게 했던 걸 생각해보면… 가끔 저는 전통적인 소프트웨어공학적 무언가를 좋아했던 게 아닌가 싶기도 합니다.

그래도 지금은 지금 하는 일에 집중해야겠지요.

comments powered by Disqus