글 작성자: 개발섭

나는 이게 이렇게 커질거라고 생각 못했다.

나는 금요일 그것도 저녁 10시가 넘어서 사진전 링크가 우리 동아리 카톡방에 뿌려질때만 해도 과연 우리 동아리 사진전이 이정도로 큰 파급력이 있을거라고 생각하지는 않았다. 저녁 12시부터 많은 공유가 된 이후부터 분명히 사람이 많이 들어오는 거까지는 봤는데... 실 서버 배포를 하는 건 결국 누구나 신경을 많이 써야하는 문제라서 당일날 앞에 테스트 및 드라이 리허설 방식으로 서버 부하테스트도 해보고 다른 일까지 모두 처리하다보니까 지쳐서 새벽에 구글 애널리틱스로 많은 사람들이 들어왔구나 와 그래도 서버가 안뻗고 잘 되는거 보면 뭐 어쨌든 굴러가는구나 이게...하면서 별생각을 안하고 잠을 잤다.

자고 일어난 나는 새벽녘에 AWS로부터 메일 두통을 받았는데, 다음과 같은 메일이었다.

 

...?

AWS 프리티어 만료.. 직전...? 뭔가 이상하다 싶어서 나는 우리 전시회 서버에 달린 구글 애널리틱스로 도대체 얼마나 들어와있길래 이상황이 생긴거고, 그리고 도대체 얼마나 쓴건지 파악해야했다.

 

50GB + 195GB = 245GB를 하루만에?

 

AWS Billings 페이지의 이 어마어마한 금액을 보고는 딱 드는 생각은 "아... 하루만에..? 이정도를 다 쓴다고?  큰일났다" 라는 생각뿐이었다.

 

이 사건은 왜 이렇게 되버렸나..

 

졸업반인 나는 인턴도 끝났고 졸업할만한 과제도 다끝내서, 솔직히 말하자면 거의 백수였다. 그래서 뭐라도 하자는 심정으로 아는 사람들 중에 프로젝트를 하는 사람이 없는지 찔러보고 다녔다. 그러다가 한 명을 찾았는데, 내가 여전히 가끔 다니는 학교내 사진 동아리의 난감한 상황을 들었다. 우리 동아리는 사진 전시회를 매년해왔는데, 이번 사진 전시회는 사실상 아예 하기가 힘든 상황이었다. 코로나 덕분에 학교 전시회시를 빌리기도 어려웠고 심지어는 임시로 사용하던 도서관마저 공사중인터라 사실상 전시회를 진행자체가 힘들었다. 

 

그래서 프로젝트를 찾고 있던 나에게 회장형이 나에게 부탁을 한 것이다. 그런 기회를 놓치기에는 싫고 일단 잡고 진행을 시켰다. 물론, 여러가지 좌충우돌이 있었으나 뭐 막상 일자체는 잘 진행되었고 여러가지 테스트를 통해서 문제점도 찾아내면서 사진전 직전까지 무슨 문제가 벌어질지에 대해서 걱정하면서 지내는게 일상이었다.

 

서버는 말짱하게 돌아간다!

 

나는 아무래도 서버,배포파트이다보니까 이 서버가 40~60명이왔을때 혹은 100명이 동시 접속했을때 뻗으면 안되는것만 걱정하고 있었다. 실제로 저 메일 이전까지만 해도, 돈에 대해서 크게 신경 쓰지 않았다. 실제로 서버가 죽는지 안죽는지 이정도로 많은 사람을 대리고 테스트해볼 기회 조차 없으니까(대학생 입장에서는) 내 머리속은 그냥 서버가 죽지만 않았으면... 그냥 어떤식으로든간에 돌아 갔으면 좋겠다는 생각뿐이었다. 

 

실제 서비스 배포전에 테스트 거쳐봤다.

 

1차 테스트는 레이아웃과 15개정도 되는 기기에서 버틸수 있는가에 대해서 테스트해보았다.

 

첫번째는 전시회다보니까 사진이 여러가지 기기에서 정상적으로 작동하는가에 대해서 테스트를 해보았다. 여러가지 기종에 다맞추기에는 솔직히 한명가지고 이 일을 처리하기에도 빡셌고, 대충 몇몇 기종정도만 체크하는 식으로 진행했었다. 

아래는 테스트 시 사진이다. 

 

진짜 처음 테스트할때는 끔직했다. 별의 별 버그가 다 있었던

물론 우리의 시간을 갈아내면서 짜잘한 버그들과 레이아웃을 같이 힘내서 잡으면서 완벽하지는 못해도 잡긴잡았다. 문제는 이 서버가 과연 진짜 버텨낼수 있는가가 나의 핵심 포인트였다. 

 

2차 테스트는 40개가량의 기기에서 이 서버가 버텨낼 수 있는가에 대해서 생각해보고 드라이 리허설 마냥 잠깐 오픈했다.

 

 

근데 막상 문제가 되는건 없었다. 오히려 데이터 넣는 CPU량이나 실제 40명이 들어온 위치나 고만고만했다. 그래서 어느정도 안심을 했었다. 아무래도 서버 구성자체가 API, 정적 웹서버를 분리해둔 탓이 꽤나 큰 빛을 본게 아닌가라는 생각을 많이 했다. 순간적으로 50명까지도 들어왔을때 큰 무리가 없었던 걸 보면 실제로 서비스에서 이 서버가 죽지 않을정도의 서비스를 만들어 냈다는 생각이 들었다.

 

물론 이 서비스가 사실 따지고 보면 큰 기능들이 많지는 않다. 전시회를 보는 것이기때문에 크게 기능을 넣지 않았고, 주요하게 작동하는 서비스는 Oauth2.0을 바탕으로 작동되는 소셜로그인 이 로그인을 바탕으로 작동하는 방명록 기능정도고 그 방명록도 반드시 남겨야하는 것도 아니기때문에, 서비스가 동시에 몰려서 문제가 발생할 일도 없긴했다.

 

그럼에도 불구하고 어쨌든, 50명정도 동시 접속도 CPU량도 크게 차지하지 않는 상태로 서비스가 운용된다고 하니 막상 잘 구현되고 진짜 이 서비스가 중간에 문을 닫고 이 서비스를 중단해야하는 상황이 생기진 않을 것 같아서 한숨 놨다는 생각이 들었다. 

 

서버는 대충 이런 스팩으로 돌아갔다. 

 

 

아무래도 Nginx를 통한 React Build를 통한 정적 웹서버 설계를 한게 서버에 과한 부하를 주지는 않았다고 생각한다. 아무래도 Nginx가 정적 페이지를 뿌려주는 것이 서버 부하를 많이 줄이지 않았을까라고 생각한다. 정확하게 내가 딱 잘라서 말하기는 어려울 것 같다. 프로젝트에 관련한 이야기들은 아래 깃허브 링크에 달아두었다. 차후에 서버와 관련된 이야기를 좀 진행할까 한다. 

 

github.com/ventulus95/Bomnae-exhibition-jwt

 

ventulus95/Bomnae-exhibition-jwt

봄내 사진예술연구회 온라인 사진전 Backend-Server (Back-Admin, Hosting) - ventulus95/Bomnae-exhibition-jwt

github.com

그래서 문제는 뭐였는데...?

 

이게 쓰다보니까 너무 길어졌다.. 너무 길면 끝까지 읽는데도 지장이 있지 않을까? 하면서 부득이하게 2편으로 나눠서 작성하겠다. 물론, 다음편도 엄청난 해법이 기다리고 그런거는 아니니까 너무 기대하지는 말자. 물론 재대로 읽는 분이 있을까 싶긴하지만..🤔

 

막간을 이용해서 전시회 홍보도 하고 간다.

대학생끼리 끄적끄적거리면서 만든거라 마무리가 어설프긴하다. 그래도 참고 봐주시면 좋을 것 같다. 하하 😊  내가 사진 전시회를 할때보다 사진이 정말 좋아지고 있다. 혹시 사진전에 관심이 있다면 들어와서 방명록 남겨주면 사진 찍은 친구들에게 큰 도움이 되지 않을까 싶다.

 

bomnae1971.site/

 

봄내 온라인 사진전

 

bomnae1971.site