AWS

졸업프로젝트 아키텍처에 대한 고민

위니윈 2023. 3. 22. 00:55

여러 고민이 생긴 밤이다.

 

백엔드를 개발하는 입장에서, 맨 처음 springboot에서 django로 넘어올 이유는 꽤나 타당한 편이었다. 그 사이에 '추천 시스템 ai'가 우리 프로젝트 기획에 새롭게 등장했고, 아무래도 ai 시스템은 파이썬 언어로 작성하게 되니 python을 사용하는 프레임워크인 django를 사용하는 것은 이유 있는 선택이었다.

 

그러나 문제는 그 다음부터이다.

 

우리는 aws의 amazon personalize에 주목했다. 이 서비스는 개인에게 맞춤형 서비스를 제공한다. ML 지식 수준과 관련 없이 간단하게 추천 시스템 결과를 제공하는 것이 특징이기도 하다.

 

이 서비스를 멘토님께 추천 받은 후부터 고민이 생겼다.

 

amazon personalize에 데이터를 던지려면 아무래도 aws 서버 위의 RDS, S3 등에서 데이터를 가져오는 편이 좋을 것이다. 이를 이유로 DB를 aws 위에 구성하기로 했는데, 그 때 불현듯 들은 생각. api gateway와 lambda 함수를 이용하면 어떨까. api gateway와 lambda 함수를 이용하면 api를 빠르게 구성할 수 있을 뿐 아니라, 서버리스 아키텍쳐라는 강력한 이점을 가지기에 우리가 제공할 서비스에 추후 높은 확장성을 기대할 수 있다. (물론 우리 서비스가 티켓팅 서비스라는 점을 고려하면 티켓팅 서버는 ec2 instance를 따로 구성하는 게 좋을 지 고민 중에 있다 - 서버리스 아키텍쳐의 단점이다. 실시간 대응에 취약하다는 단점을 가진다)

 

그러면 django는 어디로 가는가?

그렇다. 사라지게 된다. 사실상 api로 정보를 입력받고 database로 던지고, 그 값을 받아서 추천 시스템까지 돌아서 다시 user에게 전달되기 때문에 이 과정에서 django가 필요할 일은 아무래도 없어진다.

 

그러면 궁금한 것이다.

우리의 졸업프로젝트를 aws로 도배해도 괜찮을까?

 

지금 우리가 아키텍쳐를 설계하는데 있어서 여러 길이 눈 앞에 놓여져 있다.

 

첫번째는 프레임워크(아마 django가 되겠지)에서 api를 개발하고 데이터는 aws RDS 등에 던져서 추천시스템을 돌리거나,

두번째는 api 개발 단계부터 모두 aws에 올려버리는 것이다. 

세번째는 추천시스템을 우리가 직접 개발하는 것이다.

 

물론 세번째 방법에서도 api 개발 단계에서 프레임워크를 활용할지 말지는 또 다른 문제이니, 총 4가지의 선택지가 생겼다고 볼 수도 있을 것이다.

 

프레임워크에서 api를 개발할 것인가?

아니면 aws에서 FAAS인 lambda 함수를 이용하여 api를 개발할 것인가?

 

이것이 졸업프로젝트가 아닌 실제 업무라면 aws의 비용 문제도 매우 크리티컬한 부분이 되겠지만 사실 졸업프로젝트의 규모를 생각해보자면;; 이를 고려하기는 쉽지 않은 편이다. 그렇다고 아키텍처를 설계하는데 있어서 저런 허접한 이유를 내세우고 싶지도 않고.

 

지금 떠오르는 아이디어로는 프레임워크를 이용하는 방식과 aws에서 lambda를 이용하는 두가지 방식의 개발을 모두 하고 로그를 찍어서 실제 서버 처리 시간 등을 비교하는 방식이 있을 것 같다. 좀.. 끔찍하긴 한데 하하.

 

그런데 블로그 글을 쓰다 보니 이런 생각도 든다. 2가지 방식의 개발을 '모든 파트'에서 할 필요는 없지 않나? 정 급하다면 한 두가지 api만 2가지 방식으로 개발해서 로그를 찍어보는 것도... 

 

어쨌든 고민이 많아지는 밤이다.

 

+ 아침에 다시 일어나서 생각해보니 로컬 서버와 aws 서버 사이의 사양 차이가 클 것으로 예상돼서 의미 없는 방식일 수 있을 것 같다. 그러나 애초에 둘 사이의 사양을 동일하게 두는 건 불가능에 가까울테니.... 직접 해보고 왜 서버 처리 시간에 차이가 발생하는지 그 이유를 고민해볼 수 있을 것이다. 또한 개발에 있어서 편안한 방식이라는 이점 등도 비교 잣대에서 유의미한 방식이 될 수 있을 것 같다. 

'AWS' 카테고리의 다른 글

AWS를 이용한 서버리스 아키텍처 구축하기  (0) 2023.05.12
AWS RDS 프리티어로 설정하기  (0) 2023.03.29
EC2 vs Elastic Beanstalk  (0) 2023.03.22
AWS 협업을 위한 IAM 설정  (0) 2023.03.21