티스토리 뷰


 AWS를 활용하여 웹 어플리케이션을 만들어보겠다는 도전은 사실 지난달(5월)초에 시작했다. 그리고 현재 어느정도 prototype이 거의 완성된 상황이다. 비루한 개발실력으로 말미암아.. 이리 헤매고 저리 헤매다가 겨우 누더기 같은 소스코드를 덕지덕지 이어붙여 모래성을 쌓은 느낌이다.


 이번 개발일지에서는 내가 어떤 계기로 웹 어플리케이션을 만들게 되었으며, 요구사항들을 해결하기 위해 어떻게 아키택처를 구성했는지 간단하게 기록하려고 한다.




만들게 된 계기 (아이디어)


 엄청난 발명품의 영감은 항상 작은 것에서 나온다고 하던데, 어쩌면 이것도 해당될지도 모른다. 여자친구와 사귀는 시간이 점점 길어지면서, 여자친구와 함께 찍은 사진을 보관하는 것이 골칫거리가 되었다. 카카오톡은 대화형 UI라 사진보관이 불편하고.. 그래서 택한 것이 구글 드라이브였다.


 물론, 비트윈이라는 강력한 어플이 있기는 하다. 그런데 원본으로 저장하려면 결제.. 3개월이 지난 데이터를 보려면 결제.. 온갖 귀찮은 제약이 많았다. 그때 딱 스쳐간 생각. 


이거 그냥 내가 만들어보면 안될까?



요구사항 분석


어떤 기능을 구현해야할지 바로 고민에 들어갔다. 먼저 사진을 업로드하고, 조회할 수 있는 것은 기본으로 해야한다. 나는 이 조회라는 기능을 더 확장시켜봤다. 기존의 어플들은 철저히 업로드한 날짜를 기준으로 한다. 이는 조금 불편할 수 있는 것이, 찍은 당일에 사진을 업로드 하지 않으면 날짜 정보는 정확해지지 않는다.


 그래서 나는 사진의 메타정보를 활용하기로 했다. 사실상 JPG 형태의 파일만 가능하겠지만, 카메라로 찍은 이미지는 대부분 JPG 포맷이니 괜찮을 것이라고 판단했다. 사진의 메타정보를 추출하여 실제 사진이 찍힌 날짜를 알아내고, 이를 기반으로 조회한다... 내가 생각해도 멋진 기능이다.





 게다가 메타정보에는 다양한 정보가 있다. 카메라의 모델명, 노출시간, 줌 등등... 그 중에 GPS값도 있었다. 사진이 많이 모이면 이 GPS값으로 재미있는 것들을 할 수 있을 것이다. 일단은 구상단계지만, 머신러닝을 활용할 수도 있겠다. 일단 지금 단계에서는, 메타정보를 따로 DB에 보관하는 것이 좋다고 판단했다.



아키텍처 설계


 먼저, 웹 어플리케이션을 구동할 서버가 필요하다는 생각에 EC2 instance를 만들었다. 일단 그곳에 nginx와 tomcat을 설치했다. 이미지의 메타정보를 저장하는 것은 RDS를 활용하기로 했다. RDS에는 mysql을 설치했다. 이제 이미지를 어디에 저장할지에 대한 고민이 남았는데..


 1. RDS에 같이 저장 (byte 값을 저장)

 2. S3에 저장


 이미지를 RDS에 저장한다는 것이 조금 무리가 될 것 같아, S3 bucket도 하나 만들었다. (아마 프리티어로는 어림도 없을거다.) 이렇게 날림으로 설계한 아키택처를 도식화하면 아래와 같다.



 



 허접하지만 머릿속에 어플리케이션의 구조를 그려놓으니 벌써 반은 완성한 느낌이었다. 다음 포스팅에서는 이 어플리케이션을 개발하며 부딪혔던 문제점과 어떻게 해결했는지에 대해 소개하겠다.









-끝-









아래의 '공감' 버튼 클릭은 포스팅에 큰 힘이 됩니다.^^


«   2021/08   »
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        
글 보관함
Total
721,963
Today
42
Yesterday
484