일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 3WayHandshake
- 스프링기초
- 예외 커스텀
- 토스팀
- 동시성 제어
- 스프링오류
- nestjs 예외
- 분산시스템
- 자바
- 예외 핸들링
- 예외필터
- 유난한 도전
- nodejs
- nestjs
- nginx
- connection reset by peer
- 대규모 트래픽
- 토스책
- 동시성문제
- JavaScript
- 스프링 이미지
- OS
- 스프링
- Jenkins
- 스프링Entity
- 트러블슈팅
- 동시성 문제
- docker
- 스프링jpa
- Mysql이미지
- Today
- Total
목록개발 (9)
삽질블로그
목차1. 프로젝트 개요1-1. 프로젝트 소개1-2. 문제 해결 전략1-3. 기술 스택1-4. 데이터베이스 ERD2. 성능 개선2-1. 비관적 락 vs 낙관적 락2-2. Redis를 이용한 분산락2-3. Redis 성능 향상2-4. 그래프3. 개선 사항 1. 프로젝트 개요1-1. 프로젝트 소개 선착순으로 치킨 쿠폰을 받을 수 있는 치킨 디도스 프로젝트입니다. 첫 번째 분산 시스템 프로젝트입니다. 프로젝트 요구사항쿠폰 발급 이벤트를 진행합니다.유저는 다음과 같은 종류의 쿠폰 중 하나를 선택하여 발급 받을 수 있습니다. - 쿠폰 A: 치킨 무료쿠폰, 선착순 300장, 쿠폰코드: A001, 할인율 100% - 쿠폰 B: 5천원 할인, 선착순 500장, 쿠폰코드: B001, 할인율 50% - 쿠폰 C: 1..
목차1. 프로젝트 개요1-1. 프로젝트 소개1-2. 문제 해결 전략1-3 기술 스택2. 개발 결과물2-1. 데이터베이스 ERD2-2. 백엔드 아키텍처2-3. 부하 테스트 3. 개선 사항3-1. 백엔드 아키텍처3-2. TPS, MTT 개선4. 후기 1. 프로젝트 개요1-1. 프로젝트 소개선착순으로 치킨 쿠폰을 받을 수 있는 치킨 디도스 프로젝트입니다. 첫 번째 분산 시스템 프로젝트입니다.프로젝트 요구사항쿠폰 발급 이벤트를 진행합니다.유저는 다음과 같은 종류의 쿠폰 중 하나를 선택하여 발급 받을 수 있습니다. - 쿠폰 A: 치킨 무료쿠폰, 선착순 300장, 쿠폰코드: A001, 할인율 100% - 쿠폰 B: 5천원 할인, 선착순 500장, 쿠폰코드: B001, 할인율 50% - 쿠폰 C: 1천원 할인,..
Algorithm Review 프로젝트를 끝내고 AWS에서 이것저것 테스트를 진행해볼까 하다가로컬에서 우선 이것저것 해보고 싶은 마음에 새로운 프로젝트를 진행하게 되었다.내가 가장 경험해보고 싶은 것은 1. 동시성 문제 해결2. 분산 시스템 구축 다음과 같은 경험을 하고 싶었다. 크게 read와 write로 나눴고 어떤 프로젝트를 하는게 좋을까 하다가쿠폰에 환장하는 나같은 사람들은 선착순 치킨 쿠폰 이벤트가 열리면 서버에 엄청난 트래픽을 주기 때문에그 트래픽이 마치 디도스 같아 프로젝트명을 치킨 디도스로 정했다ㅋ.ㅋ 그럼 차근차근 단계를 밟아보자. 프로젝트의 요구사항은 다음과 같다. 사용자는 다음 임의의 쿠폰 중 한 개를 선착순으로 발급받을 수 있다.중복 발급은 불가능하며, 쿠폰 종류는 3개가 존재한다...
Nodejs로 개발 스택을 바꾸면서 동시에 개인 프로젝트를 진행하게 되었는데,버전1부터 버전3까지 개발 과정을 거치면서 예외 처리를 어떻게 하는게 좋을까 하는 생각이 들곤했다.각 계층에 대한 예외처리를 하는게 맞지만, 한 계층에서 다른 계층의 에러를 핸들링을 하는게 맞을까 하는 고민이 있었다. 예를 들어 Express.js로 개발한 개인 프로젝트 버전 2에선 다음과 같은 예외 처리가 많았다. 다음 코드는 Service에서 던져진 에러를 Controller에서 식별해 http에러를 던지는 동작이다. 이는 서비스와 컨트롤러간의 결합도가 낮고 SRP원칙을 준수한다는 장점이 있지만 그 외엔 단점이 너무 많은 전략이다.// PostService.tspublic async getPost(postId : number..
🌟 Algorithm Review 프로젝트 이 개인 프로젝트는 알고리즘 복습을 하면서 내가 복습을 하고 싶은 날짜에 알림 설정을 통해 복습 알림을 받을 수 있게 만든 알고리즘 복습을 도와주는 웹 서비스이다.3월부터 시작했지만, 계속 버전이랑 기술스택도 바꾸고 중간 중간에 다른 프로젝트 때문에 지금에서야 완성했다. 평소에 백앤드 개발을 희망했지만 의도치않게 프론트개발만 해와서 이번 개인 프로젝트를 통해 드디어 백앤드 개발과 원하는 기술들을 사용해보았다. 아쉬운 점이 있다면 TDD로 개발을 하고 싶었지만 시간에 쫒겨 기능완성을 우선 했다. 그래서 작성해논 테스트 코드가 회원부분 밖에 없다. 비록 지향했던 TDD개발은 못했지만(?) 이제 남은 기능들에 대한 테스트 코드도 작성해보려고 한다. 이제 원하는 기능..
개인 프로젝트를 진행하면서 프론트는 Vercel로 배포하여 자동배포와 https를 적용하였는데, 서버는 아직 자동배포 환경을 만들어놓지 않아서 이번에 Jenkins로 구축을 하였습니다. Jenkins 란?Jenkins는 지속적인 통합 및 지속적인 배포 (CI/CD)를 지원하는 오픈 소스 자동화 도구입니다.Jenkins는 자바 기반 웹 애플리케이션이며, 빌드, 테스트, 배포를 자동화해 줍니다. CI / CD 란?CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미하며,소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 합니다.CI(지속적 통합)은 코드 변경 사항을 공유 소스 코드 리포지토리에 ..
이번에 알고리즘 리뷰 사이트를 개인프로젝트로 진행하면서 서버를 배포할 때 HTTPS를 적용하기로 했습니다.저는 AWS EC2를 이용했기 때문에 1. AWS의 로드밸런서를 통해 HTTPS를 적용하는 방법2. Nginx로 HTTPS를 적용하는 방법두 가지 방법 중 2번째 방법으로 진행하였습니다. Nginx로 HTTPS를 구현한 이유는 아래와 같습니다. 1. AWS의 로드밸런서 비용이 부담된다.2. 후에 Nginx로 무중단 배포를 구현해보려 계획중이다.3. Nginx로 로드밸런싱 성능 테스트를 진행할 예정이다. HTTPS란?하이퍼 텍스트 전송 프로토콜 보안(HTTPS)은 웹 브라우저와 웹 사이트 간에 데이터를 전송하는 데 사용되고 있는 기본 프로토콜인 HTTP의 암호화된 HTTP 프로토콜로서 안정화된 데이터 ..
저번에 간단한 프로젝트로 미팅과 소개팅을 할 수 있는 프로젝트를 만들려다가본인인증을 넣어야 한다는 피드백을 받아서전부터 알고리즘을 리뷰할 수 있는 사이트를 만들어보고 싶었는데이미 나와 같은 생각을 한 사람이 있어서 이 분의 프로젝트를 비슷하게 따라해보려고 한다. https://velog.io/@ayoung0073/Project-ARS-%EA%B0%9C%EC%9D%B8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%9B%84%EA%B8%B0 [프로젝트] ARS 개인 프로젝트 소개 및 정리ARS 개인 프로젝트 정리 (Springboot & React)velog.io ERD도 다음과 같이 수정하였다.앞으로 프로젝트를 진행하면서 기능을 추가할 때가 된다면 ERD도 다시 설계하려고 한다..