먼저 지식이 부족한 감자대가리라 도게자 박고 들어가겠습니다..
"이새끼 지식 ㅈ도 모르고 이딴 질문하는거 개패고싶지만 한번 참고 알려준다 ㅋㅋ " 라는 마인드로 말해주시면 감사하겠습니다.. 모든 훈수에 대해 공부 후 흡수하겠습니다..(패드립만 ㄴㄴ)
현재 수강신청 웹사이트를 운영중인데, 제가 생각한 가장 중요한 요구사항이 실시간 + 원자성을 보장해야된다. 입니다.
처음에 설계했을 때의 계획은 이렇습니다.
1. 현재 단일 웹서버를 사용중이고, 추후 웹서버를 추가로 스케일 아웃 할 계획이 있다.(아주 먼 미래긴함..)
2. 수강신청의 로직은 RDB를 사용하지 않고 오직 Redis만 사용한다.
리팩토링 전에 사용했던 방식은 지식도 없이 그냥 기술블로그보고 set + transaction 사용해서 수강신청 로직을 사용했는데, 탑다운 방식으로 공부하니깐 어플리케이션 코드(if 조건문)으로 인해 원자성 보장이 안되더라구요. (부하테스트 해봤는데 동시성 이슈는 안터져서 냅두는 중입니다. 이거 진짜 개발자 자격 박탈, 반성하고 리팩토링 하려고 하고있습니다..)
이로 인해 제가 생각했을 때의 동시성 관련된 기술들을 나름의 방구석 분석을 통해 생각해보았습니다.
1. synchronized 사용
- synchronized 키워드를 사용하여 특정 코드 블록 한 번에 하나의 스레드만 접근 시키기
- 만약 서버 증설할 경우 원자성 보장이 안됨.
2. ression 분산락
- 추후 서버를 확장할 경우 분산제어를 위해 사용
- 하지만 추후 서버 증설은 너무 먼 미래고, 원자성은 보장되지만 최소 4RTT(lock - scard - sadd - unlock)를 사용한다.
3. lua 스크립트
- 1 RTT로 원자성 보장
- 현재 수강신청 로직에 DB는 사용하지 않아 가장 괜찮아보임
위 3개의 기술을 생각했을 때, 3번을 사용하는 것이 가장 괜찮아 보이는데,, 아무리 기술블로그를 뒤져봐도 시니어 개발자들은 루아스크립트는 잘 사용하지 않더라구요. 이거는 제 구글링 부족으로 인한 근거없는 판단입니다..
아마도 제 뇌피셜로는 실무에서 중요하게 생각하는 유지비용 및 가독성(기술 친화적)으로 인해 트레이드 오프를 포기한 전략이지 않을까 싶긴합니다..
말이 길어졌네요..
그래서 제가 궁금한 질문은 이렇습니다.
1. 실무에서는 위와 같은 요구사항이 생겼을 때, 어떤 기술을 사용하는지?
2. 서버 증설의 계획이 있지만, 너무 먼 미래일 경우에는 현재 요구사항에 맞는 기술 선택 후 코드 리팩토링을 하는지? 아니면 그냥 증설 계획에 맞게 기술을 선택하는지,
선생님들의 깊은 훈수 기다리겠습니다..
해당 댓글은 삭제되었습니다.
백엔드도 올리긴 했습니다.. 답변 감사합니다..
@ㅇㅇ(124.48) 누군지는 모르겠지만 참고하겠습니다..
애초에 레디스는 메모리 데이터 베이스인데, 스프레드랑 Truth 레이어 따로 나누잖아. 루아 스크립트는 쓰게 하니까 뭐 문제될거 있나
루아 스크립트 명령 묶어서 한번에 실행하는거를 예제로 많이 배우잖아. 애초에 단일 노드 기준으로
에휴 씨발 아니나다를까 바로 튀어나오네 이새끼 비전공에 경력이라곤 QA 인턴뿐인 개백수 새끼니 걸러 듣는걸 추천한다 너도 잘알다시피 조금만 얘기 해봐도 개씹허수새끼인거 티날거다
124.48 다중이라서 쟤 백수임. 나보고 백수 어쩌고하는데 나는 공기업 납품하는 프리랜서고
@ㅆㅇㅆ(124.216) 백수 ㅇㅈㄹ 싸고 있네 병신새끼 ㅋㅋㅋ
애초에 이런 문제는 RDB 트랜잭션이 제일 먼저임. 걍 문서도 그렇게 되있고.
레이어 나누고 RDB 트랜잭션으로 따로 나눔
@ㅆㅇㅆ(124.216) 백엔드 할줄도 몰라서 수파베이스 끌고 염병떠는 새끼가 아는척 지랄 똥을 싼다 에휴 븅신
루아스크립트 게임에서 많이 썼는데
https://gall.dcinside.com/board/view/?id=programming&no=2899760&page=1
디비가 원자성을 보조해주는데 디비를 왜 안씀 사실 레디스 역할도 디비가 어느정도 해줄 수 있음 postgresql정도면 내 추천은 postgresql에 레디스를 같이 쓰는 거임 동시성 이슈도 디비가 많이 커버쳐준다 이래서 남이 다 쓰는 기술이면 일단 한 번은 써봐야함 그리고 서버 사양이 어느정도인진 모르겠지만 라즈베리 파이급이 아닌 이상 증설할 일이 있을까 싶네 - dc App