개발자
안녕하세요. 창업 겸 작은 프로젝트를 준비하고 있는 학생입니다. 소셜 앱 쪽으로 하고 있어. 많은 트래픽과 유저를 감당할 수 있는 백엔드를 구성하고자 합니다. 혼자 개발을 하고 있어 개발 리소스가 부족하고 원래 프론트를 주로 하다보니 많이 부족합니다. 저의 목적은 다음과 같습니다. 1. 최대 50만 유저까지 (물론 50만 유저 달성은 정말 어려운 일이라고 생각합니다) 2. Auto Scaling이 되어 배포 후에 큰 신경을 안 써도 되며 3. 최대한 적은 비용을 유지하고 싶습니다. 우선 제가 뭐라도 공부해보고 질문을 드려야 할 것 같아서 나름대로 구성해봤습니다. 백엔드 언어: express 프론트 언어: RN 서비스 요약: 매일 하나의 사진을 올리고 유저끼리 투표하는 서비스 (많은 socket 알림이 오감) 서버 배포: AWS API Gateway+ AWS Elastic Beanstalk or AWS lambda DB: mongoDB atlas 이미지 저장: s3 push: FCM - 여쭤보고 싶은 사항은 다음과 같습니다. 1. 배포를 AWS lambda를 고려하고 있습니다. 서버를 서버리스로 구성하면 더 저렴할까요? 2. mongoDB atlas에서 요금을 쓰는게, aws의 DocumentDB를 사용하는 것보다 더 저렴할까요? 3. 더 비용을 낮추기 위해서는 어떤 선택을 할 수 있을까요? 제가 뭘 더 알면 좋을까요? 많이 부족하고 긴 글 읽어주셔서 감사합니다.
답변 4
인기 답변
일단 API GW + Lambda로 구성하시고, DB는 Aurora 쓰시면 되겠습니다. 트래픽이 집중되는 데이터의 경우 DynamoDB로 빼두어도 좋겠네요. 백엔드 트래픽 확장성 대응은, 오랜 경력의 백엔드 개발자들이 각종 노하우로 쌓아가는 부분이 적지 않습니다. 학생이나, 저연차가 쉽게 다룰 수 있는 부분은 아니라고 생각합니다. 그래서 시니어 개발자가 연봉이 비싼거죠. 굳이 하자면, 고성능 대응은 이렇게 대비하시면 좋습니다. 목표가 50만이면 대단히 도전적인데요, 일단 10만을 어떻게든 달성합니다. 10만 수준의 규모는, 대충 발로 만들어도 요새 인프라에서 무리없이 받을 수 있는 수준인데요, 학생이 10만이나 모을 수 있으면, 좋은 규모의 투자를 받는데 무리가 없을 겁니다. 아마 투자자들이 줄을 서겠죠. 10만을 모았는데 투자자가 없다? 그럼 시장 가치가 없는 서비스겠죠. 그때라도 빨리 접는 게 좋겠습니다. 암튼 10만 모은 시점에 투자받은 돈을 기준으로 (저같은 ㅋㅋ )비싼 엔지니어를 고용해서 해결하면 됩니다. 10만인 상태에서 고용하면 50만이 되기 전까지 문제를 해결해줄 겁니다. 그게 결국 싸게 먹히는 길입니다. 어떤 일을 이루기 위해, 반드시 내가 다 직접 손을 써야하는 건 아닙니다. 직접한다고 해도, 지금 주로하시는 프론트에 집중하시는 것이 효과적이겠습니다. 한줄요약: 일부러 비싼 서비스를 쓸 필요는 없지만, 그렇다고 너무 쥐어짜느라 현재 수준의 서비스 성패에 직결되지 않는 노력에 시간낭비하지 말자. 솔직히 말하자면, 질문자님의 서비스가 무엇이든지 간에, 전 10만 달성이 어렵다고 봅니다. 님의 아이디어가 특별히 나빠서가 아니라, 대부분의 아이디어가 시장에서 실패하기 때문입니다. 예외적으로 성공하는 서비스가 있는 건데, 그 예외가 되기 위해 직접적인 노력을 해야지, 트래픽 대응을 미리 걱정하는 것은 의미가 없다고 생각해요.
정준
작성자
인하대학교 인공지능공학과 • 2023년 10월 24일
현실적인 조언 정말 감사드립니다. 특히 "현재 수준의 서비스 성패에 직결되지 않는 노력에 시간낭비하지 말자."라는 말이 너무 인상 깊네요. 덕분에 정말 중요한 사실을 다시 한번 인지하게 됩니다. 이전에 구글 GCP 서버를 돌리다가 갑자기 15만원이 결제된 적이 있습니다. 트래픽이 거의 없었는데 말이죠. 그렇기에, 서버에서 높은 비용이 나오는 것에 대해 보수적인 입장을 가지고 있는 듯 합니다. 특히 학생이기에, 얼마 되지도 않은 서버 비용 때문에 나중에 서비스를 하는데 방해가 되면 치명적일 거라 생각해서요. 특히 지금 기획하는 서비스 자체가 많은 유저를 요구하는 소셜 서비스라 무조건 많은 유저를 만들기 위해 노력할 예정입니다. 운 좋게 10만까지 달성한 이후, 서버가 버텨주더라도 거기서 나오는 비용을 제가 감당하기 어려울까 우려되는 마음에 질문을 드렸습니다. 학생인 제가, 경험과 능력이 있으신 개발자님께 편하게 답변 받을 수 있는 세상이 정말 놀랍기만 합니다. 이렇게 시야를 트게 해주셔서 감사합니다. 백엔드 과외라도 받아야 하나 고민하던 참이었거든요. 혹시 추가적인 질문에 답변해주실 수 있으시면, 조심스레 다음과 같은 부분도 여쭤보고 싶습니다. - 1. DB를 Aurora / DynamoDB(트래픽이 높은 경우)를 추천해주셨는데, mongoDB보다 비용적 이점이 많이 클까요? 2. 트래픽 걱정하는 게 의미없다는 말에 깊이 동의합니다. 허나, 생각보다 제 백엔드 실력이 많이 부족합니다. 때문에 예상치 못하는 많은 비용이 발생할 위험을 없애기 위해, 어느 정도 시간은 투자할 가치가 있다고 생각합니다. 추후에도 제가 그 경험을 활용할 수 있고요! 그렇다면, 짧은 시간에 좋은 백엔드 환경을 구성하는 방법은 역시 뛰어난 경험이 있으신 분께 과외를 받는 것일까요? - 다시 한번 소중한 시간 내어 답변해주셔서 진심으로 감사하다는 말씀드립니다. 특히 많이 부족하고 무모해보일 수 있는 질문 글이었는데, 친절히 말씀해주셔서 너무 감사합니다.
보통 대규모 서비스에는 마이크로서비스아키텍쳐를 고려하여 sqs /sns 를 채택하고 병렬 및 분산처리에 대한 설계 및 알아야 할게 많으실 겁니다. 일단 비용절감 및 속도향상과 디비부하 방지를 위해 Redis를 메인디비로 채택하고 디스크디비를 백업용으로 설계하시다가 규모를 늘릴필요가 있다 판단 되실때 kafka 사용을 고려해 보심이 어떨지요
음 저같으면 백엔드는 미리 고민하지 않을거같아요. 앱 완성도에 신경 쓰고 백은 서버리스 파이어베이스에 디비 및 파일관리를 맡기고 앱 서비스 완성도 위주로 먼저 만들고 유저 확보 후 여유가 생기면 파이어베이스 api 를 백엔드 로 한단계씩 옮길거같습니다. 서비스 사용자 입장에서 백엔드가 어떻고 배포 캐쉬 큐 이런거 하나도 신경 안씁니다(물론 dau 가 20만 30만 넘어가면 모를까..) 결론은 ui ux 가 제일 중요합니다 처음부터 너무 거대한 규모를 고민하는건 시간 낭비이지 않을까 싶습니다!
잠깐이나마 창업은 해본 경험으로는 처음에는 지금하고 계신 고민은 이른 고민이었다는 걸 느끼게 되실 껍니다. 특히 첫 창업이라면 더욱 그렇습니다. 저도 연쇄창업마가 되진 못했지만 좋은 아키텍처 훌륭한 클라우드 비용설계하는데 시간이 들지 않으면 하면 되겠지만 가장 중요한건 내가 생각한 그서비스를 시작해보는 것이 우선입니다. 초기에는 서버비용 월 30이면 충분하고 aws activate 크레딧(https://aws.amazon.com/startups/credits) 같은 걸 알아보셔도 됩니다. 그리고 코드 이쁘게 작성하는 것보다 빠른시일안에 돌아가는 제품을 만드는게 우선이라고 생각합니다
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 10월 23일
소셜 서비스의 백엔드를 구성하고자 하는 것이 쉽지 않은 일임을 알고 있습니다. 사용자가 많아질수록 요구사항도 복잡해지게 마련인데다, 효율적인 비용 관리도 중요하니까요. 1. AWS Lambda: 서버리스로 구성할 경우, 인프라 관리에 대한 부담이 작아지고, 처리 용량에 따른 자동 확장이 가능합니다. 또한, 사용한 만큼만 비용을 지불하므로 초기 비용 절감에 도움이 됩니다. 하지만 큰 규모의 애플리케이션에서는 실행 시간, 메모리 등의 제한 때문에 처음부터 Lambda를 사용하는 것이 항상 최선은 아닙니다. 2. MongoDB atlas vs AWS DocumentDB: 각각의 DBMS는 장점과 단점을 가지고 있습니다. MongoDB Atlas는 전 세계 어디서나 데이터를 배포할 수 있는 클라우드 데이터베이스입니다. 반면에 AWS DocumentDB는 Amazon에서 관리하는 NoSQL 데이터베이스로 Amazon EC2 인스턴스와 잘 통합되어 있습니다. 그래서 벤더 종속성을 원하지 않거나 고유 기능(예: 방대한 글로벌 리전 지원)을 원한다면 MongoDB Atlas를, AWS에 이미 많이 투자하였거나 관리형 DB 서비스 또는 AWS와의 통합성을 원한다면 DocumentDB를 선택할 수 있습니다. 3. 비용 절감 방법: 앱이 작동하지 않을 때 인스턴스를 종료하거나 예약 인스턴스를 사용하는 것이 좋습니다. 또한, 데이터 전송 비용을 최소화하기 위해 CDN(Content Delivery Network)과 같은 기술을 사용할 수 있습니다. AWS에서는 CloudFront라는 자체 CDN 서비스를 제공합니다. 4. 필요한 지식: 클라우드 아키텍처, 스케일링 전략(수직 스케일링, 수평 스케일링), 비용 최적화 전략 등에 대한 이해가 필요합니다. 또한 개발 언어와 프레임워크 외에도 NoSQL 및 SQL 관계형 데이터베이스, REST API와 GraphQL 등 다양한 백엔드 기술에 대한 지식도 중요합니다. 지금까지 답변한 내용을 바탕으로 추가로 궁금한 점이 있다면 부담 없이 말씀해주세요!
비슷한 질문 2
Q. 개발자들이 말하는 대규모 트래픽 경험은 뭔가요?
안녕하세요. 이번에 백엔드 개발자로 취준을 하고 있는 학생입니다. 문득 면접 정리를 하다보니 "대규모 트래픽을 경험해보고 싶습니다"라고 말한 것이 사람마다 느끼는 점이 다를 수 있겠다 라고 생각이 되더라구요. 저는 저 표현을 썼을때 1000만명이 써도 서비스가 안 죽고 요청을 잘 처리하는 서버 운영 방법을 알고 싶다라는 의미에서 썼는데요. 생각해보니 대규모 트래픽이 몰려서 서버가 죽는 경우는 일상에서 그렇게 흔하지 않을 수도 있다고 생각이 되었습니다. 혹시 선배님들은 위와 같은 말은 하면 어떤 것을 경험해보고 싶다인지 구체적인 사례를 알려주실 수 있나요? 예를 들면 대규모 트래픽이란 어느정도고 서버가 트래픽 때문에 죽는 경우가 실제로 흔한 사례인지도 궁금합니다. 감사합니다.
말씀하신 것처럼 여러명이 사용하는 서비스를 잘 운영하는 부분도 있지만 예상하지 못한만큼 사용자가 증가하는 경우도 포함한다고 생각합니다. MAU가 1000만명이면 월 1000만명이 사용했을 때 문제가 없도록 구현을 잘 해놓았을텐데, 이게 갑자기 동시에 100만명이 리퀘스트를 보내는 것과는 또 다른 개념이라고 생각합니다!
외 3개 답변 보러 가기
Q. 서버 설계 어떻게 해야 하나요? 너무너무 궁금하고 급합니다.
부끄럽지만 서버 설계를 바꿔야 할 시기가 와서 선배님들께 여쭈어봅니다. 지금 aws에서 ec2 1대를 이용해서 서비스를 이용하고 있습니다. 당연 오픈한지 얼마 안 돼서 고객 유입도 적어 문제가 안됐는데 마케팅 이후 300명이 되면서 서버를 다시 작업해야 할 시기가 된 거 같아 아무리 찾아도 무얼 봐야 하는지 몰라서 여쭈어봅니다. 추가 마케팅 이후 예상 고객이 천명이 이상의 접속자가 생길 예정입니다. 프론트 : react 백엔드 : node.js DB : RDS (db.t3.micro) PC : aws EC2 1대 (t2.medium) 배포 : 젠킨스 git - 회원가입 - 상품1,상품2,고객 리스트 페이지 - 회원 정보 페이지 - 채팅(+결제) - 관리자 - 이미지 저장 이렇게 크게 나누어져 있습니다. 이런 작업이 회바회고 케바케이다 보니 어떻게 해야 할지 맞는것이 뭔... 더 보기
저도 서버프로그래머가 아니라 궁금한데 보통 동시접속이 아니고서야 1000명은 거뜬히 커버가능하지 않나요? aws ec1 스펙이 어느정도인지는 모르나. 저도 지금 nodejs 서버프로그래밍하고 있는데 컴퓨터 한대당 1만명으로 잡고있어서요. 궁금하네요.
외 6개 답변 보러 가기
지금 가입하면 모든 질문의 답변을 볼 수 있어요!