전체보기

    [DB] 동시성 이슈(Concurrency Issue)

    [DB] 동시성 이슈(Concurrency Issue)

    동시성(Concurrency) 동시성은 운영체제에서 사용되는 용어로 동시에 실행되는 것처럼 보이는 것으로 논리적인 개념으로 싱글코어와 멀티코어에서 가능하다. 해당 글에서 사용되는 DB에서의 여러개의 스레드(요청)이 동시에 같은 주소의 값(데이터)을 참조하여 접근 및 수정하는 것을 의미한다. 예를들어, 트랜젝션 A가 알렉스라는 이름을 읽고 트랜젝션 B가 밥을 추가해 같은 트랜젝션에서 1번의 리드와 3번의 리드가 다른 것을 확인한다. 유령 레코드가 나타나는 현상으로 이를 팬텀리드(Phantom Read)라 한다. 일반적으로 문제 해결 방식에는 두 가지 방법이 존재한다. 1. 비관적 동시성 제어 데이터를 비관적으로 바라보며 다른 요청에 의해서 수정될 가능성을 염두하여 Lock을 거는 방식이다. 데이터베이스의 ..

    [JPA] N+1 문제 및 해결 방안

    [JPA] N+1 문제 및 해결 방안

    N+1이란? 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수 N번 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어와 서버와 데이터의 접촉이 N번 발생하는 현상이다. 예시로 게시물과 해시태그를 예시로 들어 확인해본다. 가정 한 게시물에는 여러개의 해시태그를 들 수 있다. 해시태그는 한 게시물에만 속한다. @Entity @Getter @Setter @NoArgsConstructor public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_id") private Long id; private String content; @OneToMany(mappedBy = "boa..

    프로젝트 회고 [플랩업]

    프로젝트 회고 [플랩업]

    개발기간 2022.06 ~ 2022.09 (3개월) 플랫폼 Android 담당역할 유저 (로그인, 수정, 보안) 개발, CICD(Docker, DockerHub, Jenkins) 파이프라인 구축 infra 서버 구축, NCP이용한 SMS 문자 인증 패키지 구조 설정, Exception Handler구성 이번 앱런칭은 방학기간에 사이드 프로젝트를 진행하고싶어 지인들로 구성하여 앱런칭을 진행하였다. 이번 앱런칭에 회고를 작성한다. 회고 첫째, 코드리뷰의 부재 기술 발전에 큰 도움이 된 것은 '집단지성'이라고 생각한다. 코드리뷰는 집단지성을 극대화 할 수 있다. 하지만, 각각의 팀원은 사이드 프로젝트이기에 투자할 수 있는 시간은 모두가 달랐다. 그렇기에 코드리뷰를 진행하게 되면 누군가에게 업무가 몰리는 현상이..

    [Network] HTTP 상태코드

    [Network] HTTP 상태코드

    상태코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx(Informational): 요청이 수신되어 처리 중을 의미한다. 2xx(Successful): 요청 정상 처리한다. 3xx(Refirection): 요청을 완료하려면 추가 행동이 필요하다. 4xx(Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없다. 5xx(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못한다. 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 된다. 299 -> 2xx(Successful) 451 -> 4xx(Client Error) 599 -> 5xx(Server Error) 2xx(Sucessful) - 클라이언트의 요청을 성공..

    [Network] HTTP 메서드 활용

    [Network] HTTP 메서드 활용

    클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지이다. 1. 쿼리 파라미터를 통한 데이터 전송 GET, 정렬 필터로 주로 검색어에 사용된다. 2. 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황 1. 정적 데이터 조회 이미지, 정적 텍스트 문서 2. 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터로 쓰인다. 3. HTML FORM을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경에 쓰인다. 4. HTTP API를 통한 데이터 전송 회원가입, 상품 주문, 데이터 변경 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax) 정적 데이터 조회의 경우(쿼리 파라미터 미사용) 이미지, 정적 텍스트 문..