여행 동행 참여에 대해 동시성 문제 해결하고 성능 비교 해보기
·
💻 Dev/Spring
개요현재 여행 동행 모집 프로젝트를 진행하는 중에, 동행 참여에 대한 동시성 이슈가 발생했다. 1. 동시성 문제 발생 원인여행 동행 모임 참여 로직은 다음과 같다.멤버가 우동(동행 모임)에 대해 참여 요청을 보낸다.참여할 수 있는지 유효성 검증을 한다. (인원 체크, 기존 참여 여부 확인 등)우동에 대기자로 등록한다.관리자가 승인하면 동행에 최종 참여된다.한 우동에 대해 대기자는 최대 5명만 가능하기 때문에, 처음에는 대기자 객체를 생성할 때 대기자 수를 체크했다.public class WaitingMember { public static WaitingMember of(Udong udong, Long memberId, int currentWaitingMembersCount) { ..
스프링MVC는 왜 스레드를 최대 200개까지 사용할까?
·
💻 Dev/Spring
스프링 MVC는 웹 애플리케이션 개발에서 널리 사용되는 프레임워크이다.많은 사람들이 스프링을 왜 쓰냐 하면 거의 다 "스레드가 많아서", "대규모 트래픽 처리할 수 있어서"라고 한다.사실 스레드 개수 문제가 아니다 🙅‍♀️node.js는 적은 스레드로 논블로킹을 사용해서 충분히 트래픽을 처리한다. 스프링 MVC 기준 스레드 풀의 max값은 200이다.server: tomcat: threads: max: 200 # 생성할 수 있는 thread의 총 개수 min-spare: 10 # 항상 활성화 되어있는(idle) thread의 개수 max-connections: 8192 # 수립가능한 connection의 총 개수 a..
[Spring Boot] gradle 프로젝트 불러오기
·
💻 Dev/Spring
스프링을 공부하기 전에 스프링 부트 강의로 일단 감을 잡기로 했다.. 강의는 Intellij지만 난 유료버전을 못써서 이클립스로 진행했다. 이클립스에서는 gradle 플러그인을 설치해줘야 한다. 그리고 start.spring.io/ 사이트에 들어가 스프링 프로젝트를 생성해야 한다. Group - 보통 회사명을 적는데 그냥 hello로 작성 Artifact - build 된 결과물 (프로젝트명) Dependencies - 어떤 라이브러리를 당겨서 쓸 것인가 Spring Web, thymeleaf(html 템플릿 엔진) 라이브러리를 추가해주고 GENERATE를 눌러 다운로드하여준다. 그다음 File -> Import -> Existing Gradle Project로 build.gradle파일이 들어있는 프로..
[Spring] 1.스프링 프레임워크란?, IoC(스프링 컨테이너)
·
💻 Dev/Spring
프레임워크란? 개발자들이 개발을 하기 위한 업무를 추상적으로 정의해놓은 틀이라고 할 수 있다. (클래스, 인터페이스 등…) 예를 들어 차로 서울에서 거제도까지 가는 게 목표라고 쳤을 때 , 네비게이션이 프레임워크 역할을 한다고 생각하면 된다. 네비게이션이 없으면 각 고속도로의 위치를 내가 직접 알아야 하는 반면, 네비게이션이 있으면 그냥 보고 따라가면 된다. 때문에 작업에 효율성에 많은 차이가 있다. 자바를 이용한 프레임워크는 대표적으로 2가지가 있다. 스프링 프레임워크 = 웹 모바일 프레임워크 = 안드로이드 프레임워크 vs 라이브러리 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 ex) 자동차의 프레임, 즉 기본적으로 ..