안녕하세요! 백린이 공부중인데 질문있어서 글올립니다 한번만 봐주세요 ㅠ
제가 이번에 스프링 부트와 jpa를 이용해서 사이트 하나 만들어봤습니다.
이번에는 다른 기능을 활용해서 간단한 주식 사이트를 만들어 보고 싶은데
원래는 open api와 스프링 배치를 이용해서 등락이 10분마다 한번씩 업데이트 되는 사이트를 만들 계획이었는데(일별 최대 상승과 하락 종목 30위까지 보여주는 기능구현)
1. 생각해보니 스프링 배치보다 레디스를 이용하는게 더 빠르고 영구저장 데이터가 아니라 캐싱 메모리 쪽이 더 잘 맞을것 같아서 계획 변경 하려고하는데
이게 맞는 방향성인가요?
2. 회원이 좋아요 누른 종목은 따로 빼서 모아보여주려고 하는데 이건 카프카 비동기 처리 기능으로 구현해 보려고 합니다. 영구적 데이터라 데이터도 따로 빼야 될거 같고
이 기능을 비동기 처리로 하는게 맞는 건가요?
3. 만약에 실시간으로 웹 소켓하면 약 2300개 종목이 업데이트가 되는데 , 서버비가 달 10만원 이상 나오겠죠? (서버비 감이 안잡혀서 ㅠㅠ 이쪽은 포기했습니다)
제가 설계한 어설픈 아키텍처
1. open api를 통해 10분마다 한국 주식 데이터를 받는다 -> 데이터베이스 -> 레디스로 데이터 뽑기 +검색 기능 구현
2. 카프카 비동기 처리로-> 회원 좋아한 종목처리해보기 + 영구 저장
긴 글 봐주셔서 감사합니다. 진짜 뭐가 잘못된것지 감도 안와서 질문드렸습니다..
2번은 굳이 카프카를 쓰는 이유가 설명만으론 없어보이는데 설명을 더 자세히 해주셈 1번은 캐싱 많이 쓰는 형태긴 하고, 참고로 주식 도메인은 10분 마다 받는다 느낌으로 하면 안되고 실시간성이 중요함. 토이 프로젝트로 하는거라면 ㄱㅊ고 실운영은 힘들듯
카프카는 비동기 써보고싶어서 넣었습니다.. 카프카 말고 다른걸로 쓸까요? 토이프로젝트라서 10분마다로 했습니다. 사실 웹소켓+ 서버 두개 만들고 유튜브에서 본 토스 아키텍쳐 따라해보고싶었는데 서버비 때문에 무서워서 포기했어요
원래 대용량 트레픽이랑 nginx도 경험해보고 싶은데 서버비 생각하니.. 고민하다 포기 해버렸습니다 ㅠ
비동기고 카프카고 좋은데 저 주제에 비동기를 어디에 쓴다는지가 이해가 안간다는거였음
일방적으로 제가 보여주는 게 아닌.. 회원이 좋아요 누르면 그종목들만 따로 모아서 보여주고 싶은데 그 기능을 따로 때서 만들때 써보려고 합니다. 카프카를 써본적이 없어서 이해도가 떨어지다보니 이렇게 쓰는게 맞는지도 모르겠네요 ㅠ
주식 데이터도 모든 데이터 가져오는게 아니라, 차라리 선택한 종목들에 대해서 필터링한 데이터만 가져와서 처리하면 더 가볍지 않음???
그럼 유저가 종목 검색할때 안되지않나요?
아 맞네
근데 검색이란것도 굳이 실시간 가격정보가 아니라, 주식의 이름만 필요하다면, 이름만 가진 가벼운 테이블로 조회가능하지 않음? 중요한건 주식의 모든것을 보여주는게 아니라, 실시간 정보를 업데이트 처리하고 보여주는 거자너. 모든 종목을 다 실시간으로 다 보여주는건 그냥 부가일 뿐이고
걍 2300개 다가져오지 말고 한 100개만 가져오고 검색은 100개 안에서만 해도 되고 위처럼 이름만 가진 인덱스 하나 만들어놓고 상세 정보 요청 시에 100개가져왔던 주식데이터면 데이터 보여주고, 나머지는 검색은 되지만 상세 정보는 지원하지 않는 주식입니다 이런식으로 띄우주면 될듯
만약에 등락에 대한 시계열 그래프까지 표현한다고 하면, 결국 모든 종목의 모든 변동이벤트에 대한 정보를 가지고 있어야 할거같은데 이거도 난감해지지 않음???
답변 감사합니다. 달아주신 댓글을 바탕으로 생각을 좀더 해보겠습니다ㅠ
또 아이디어 하나 생각해 보자면... 어차피 가볍게 만들고 기능을 넓히는 것도 좋지 않을까 싶음. 예를 들어 선택한 종목에 대해서, 통계 리포트를 이메일로 발송한다던가. 일별, 주별, 혹은 월별 이렇게.
오 아이디어 감사합니다 ㅎㅎ 스프링 배치로 만드는게 좋을까요?