개발 후기 #1에서는 기술적인 내용보다는 생각과 고민들 중심으로 적어보았고, 이번에는 기술적인 내용을 적어보려고 한다. 이 글이 누군가에게 도움이 된다면, 뛰어난 기술 설명이라기보다 알고보면 별것 아니라는...자신감을 고취시켜주기 때문일 것이다.
캐시 최대한 적용.
웹 앱에서의 성능 문제에 대해서 고민을 많이 하게되었다. http 커넥션의 횟수나 주고받는 데이터의 양에 대해서 큰 고민 없이 만들었는데, 초반에 오유와 뽐뿌에서 베스트에 선정되면서 접속자가 폭주하며 서버가 죽었고, 부랴부랴 개선을 했다.
주고받는 데이터 양을 최소화 하자. 데이터 전송 횟수를 최소화 하자.맛소금 생각
결론부터 말하면, 간단한 데이터라 하더라도 서버에서 가져온 데이터가 계속 유효하다면 브라우저에 저장하도록 수정했다. 방법은 매우 간단하게 그냥 cache
오브젝트 하나 만들어서 hashMap
처럼 쑤셔넣었다.
데이터 양은 곧 돈이라는 것을 알게되었다. 명심하자. 데이터는 돈이다.
데이터의 양을 줄이는 것은 사실 이미 고민을 했었던 부분이다. 하지만, 전송 횟수는 고민을 많이 안했었다. 횟수는 성능이며 돈이다. 아주 작은 연결이라도 갯수가 많아지니까 서버가 힘들어 한다. 그럼 자연스레 서버의 갯수를 늘려야 한다. 그럼....돈?!!!
파일 사이즈 줄이기
캐시를 사용하는 것과 같은 맥락에서 데이터의 양을 줄이는 것이다. 압축할 수 있는 파일들은 압축하고, 사진은 png
말고 jpg
로! 배경 이미지 같은 것은 해상도 조금 낮추고, 본문에는 가능하면 이미지 사용 안한다.
근데, 너무 몰입하면 본질을 놓칠 수 있다. 비용 때문에 품질이 엉망이되면 도로아미타불이라는 사실을 명심하자!
Auto-Scaling
아무리 최적화를 해도...떼로 몰려오면 서버는 죽게되는 것이 운명이다. 문제를 해결하기 위해서는 떼로 몰려올때 서버를 떼로 불려주어야 한다. 내가 AWS를 사용하는 가장 큰 이유중에 하나다. 가격이 비싸지만 설정이 간편하다. (사실 다른 곳은 많이 안써봐봐서 잘 모르기에 좀 단편적인 평가다...;;)
오토스케일링 설정도 굉장히 간단하다. 설정해 두면 사용 용량에 따라서 비용을 지불하면 된다.
AWS Auto Scaling을 이용하여 EC2 인스턴스를 자동으로 확장하기
DB설계 최적화
흠...사실 이부분은 별로 말할것이 없다. 아직도 너무 허접한 부분이라서 노하우라고 공개할 것이 없다.ㅠ
원론적인 이야기이지만 설계를 잘 해야 한다. 구성도 그렇고 운영, 활동 방법도 설계를 잘 해야 한다. 전문가 수준은 되지 못하더라도 최적화 부부을 꾸준히 고민하면서 설계하는 것이 중요하다. 그래야 실력이 늘지...그냥 검색해서 가져다 붙여서 사용하는 쿼리문으로는 내 환경에 잘 맞지도 않을 뿐더러 전체적인 성능도 떨어뜨리고, 당연히 비용도 증가하게 된다.
난 정말 DB에 관해서는 슈퍼 초보인데, 처음엔 그냥 가져다 썼지만, 알면 알수록 그 동안 얼마나 낭비가 많았는지...ㅠ
시스템 구성
적는 다고 적어 봤는데, 별게 없네. 어떻게 구성되었는지도 간단하게 공유해본다.
프로젝트를 하면서 오픈소스로 공개할 계획도 있었는데, 부끄러워서 공개를 못 하겠더라. 그렇다고 코드를 정리해서 공개 할 만큼의 여력도 없고, 언제까지 계속 할 수 있을거라는 확신도 없는 상황에서 문의가 꾸준히 들어와서 간단하게 나마 정리해 두려 한다.
자세한 내용은 각 부분을 검색해보면 더 훌륭한 글과 자료들이 많이 있다. 사실 그 만큼 잘 쓸 자신이 없기에 불필요한 글이 될것 같아 이 글을 그 동안 미뤄왔다. (부족한 부분은 댓글로 문의부탁요!)
맛소금 사이트는 웹서버로 톰캣 서버를 사용하고 있다. 톰캣에서 html
, js
, css
파일들을 전달하고 있으며, Java Servlet
과 JSP
웹 컨테이너 역할도 하고 있다. Servlet
으로는 REST API
만 만들었고 JSP
는 공유페이지에서만 사용된다. 나머지 로직이 모두 클라이언트에 있는 웹앱이라고 보면 된다.
웹 서버(Web Server)는 HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다. 웹 서버 소프트웨어를 구동하는 하드웨어도 웹 서버라고 해서 혼동하는 경우가 간혹 있다. 웹 서버 (소프트웨어), 위키백과
AWS 클라우드 서비스를 통해서 위에서 언급한 톰캣 웹 서버를 운영하고 있으며, Elastic Beanstalk, EC2, RDS(RDB), ELB에 대해서 조금만 찾아봐도 쉽게 운영할 수 있다. 톰캣서버를 간단한 설정만으로 편하게 운영할 수 있게 해준다!
검색해보면 한글, 우리말 자료가 매우 많이 있으므로, 하루만 열심히 봐도 충분하다! (웹서버에 대해서 지식이 있다면...)
생활코딩에 모든 강의가 다 있다. 되게 잘 되어 있는것 같은데, 나는 안봤다...체질상 동영상은 잘 안본다. 속도 조절이 힘들어서...글로 된 강의를 빨리 읽는 것을 좋아한다. 그러나 누가 물어보면 꼭 소개해준다. 정말 귀찮은...초초초보부터 친절히 설명해주는것 같아서!ㅎ
'만들기' 카테고리의 다른 글
ESP8266 nodeMCU, D1 mini 개발환경 시작하기 (0) | 2019.02.18 |
---|---|
인공지능 액면가 분석기 며짤을 공개합니다 (0) | 2018.06.13 |
맛소금 비밀 보관함 소개 (0) | 2018.02.19 |
아파트실거래가차트 개발 후기 #1 (2) | 2016.04.04 |
[타이젠 기어 S2] 기어 왓치 디자이너로 나만의 시계만들기 (0) | 2016.02.21 |
절대비밀을 전달하는 간편한 방법 - 절대비밀, 스스로 보안 (0) | 2016.02.21 |
손쉽게 나만의 기어 S2 시계를 만들자! 기어 왓치 디자이너 출시! (0) | 2016.02.12 |
댓글