Nginx - 이론편
Nginx 소개 웹 서버 웹 서버는 HTTP를 통해 클라이언트의 요청을 받고, 응답으로 데이터를 전송해주는 소프트웨어다. 주로 정적 데이터를 다룰 때 웹서버라는 표현을 사용하며 동적 데이터를 다룰 땐 WAS, Web Application Server를 이용한다. 현대의 WAS는 웹 서버의 기능도 포함하지만 여전히 분리하여 운영하는 것이 주류이다. 웹...
Nginx 소개 웹 서버 웹 서버는 HTTP를 통해 클라이언트의 요청을 받고, 응답으로 데이터를 전송해주는 소프트웨어다. 주로 정적 데이터를 다룰 때 웹서버라는 표현을 사용하며 동적 데이터를 다룰 땐 WAS, Web Application Server를 이용한다. 현대의 WAS는 웹 서버의 기능도 포함하지만 여전히 분리하여 운영하는 것이 주류이다. 웹...
문제 상황 현재 프로젝트에선 S3 서버에 이미지를 업로드하고 식별자를 DB에 저장하고 있다. 코드를 간략히 소개하면 다음과 같다. // Service.java @Transactional public void invoke(Request request, List<MultipartFile> files) { Entity enti...
현재 진행 중인 프로젝트에서 개발 서버 DB에 더미데이터를 넣어달라는 프론트단의 요청이 있었다. 이전까진 매우 소량(약 1~10개)의 데이터를 직접 DB에 삽입해주었는데, 이번엔 더미 데이터를 대량으로 만들어 넣어보기로 했다. DB에 좀 더 유의미한 데이터의 수를 유지하고, 추후에 성능 테스트나 쿼리 개선 시에도 활용할 수 있기 때문이다. Ma...
자바의 hashCode()와 해시를 이용하는 HashMap 자료구조에 대해 찾아보고 정리해보자. 해시에 대해 설명하기 전에 eqauls()를 짧게 짚고 넘어가자. equals 자바의 Object 클래스의 equals()는 아래와 같다. public boolean equals(Object obj) { return (this == obj);...
트랜잭션 트랜잭션은 BEGIN으로 시작해서 COMMIT 또는 ROLLBACK으로 끝난다. 입구는 한개지만 출구는 두개인 셈이다. 트랜잭션에 대한 개념은 다루지 않는다. 다른 글을 참조하길 바란다. 스프링은 TransactionManager라는 추상화된 트랜잭션 관리 인터페이스를 제공한다. 제공하는 메서드는 다음과 같다. txManage...
문제 상황 @Entity @IdClass(AId.class) public class A { @Id @ManyToOne private User user; @Id @ManyToOne private User follower; static public class AId impl...
문제 상황 먼저 Article 엔티티 클래스는 다음과 같이 태그를 포함하고 있다. @ElementCollection @CollectionTable(name = "article_tags", joinColumns = @JoinColumn(name = "article_id")) @Column(name = "name") private List<...
Repository란 먼저 Repository란 뭘까? @Repository의 공식 문서를 찾아보자. Indicates that an annotated class is a “Repository”, originally defined by Domain-Driven Design (Evans, 2003) as “a mechanism for encap...
스프링의 모든 요청 과정이 시작되는 DispatcherServlet에 대해 살펴보자. 전반적인 요청 흐름은 위와 같다. 필터는 스프링이 아닌 서블릿의 기술로, 이 글에선 다루지 않는다. DispatcherServlet DispatcherServlet은 이름에서 알 수 있듯이 Servlet으로, 요청 진입 시 service()가 호출된다...
자바의 Unmodifiable는 무엇을 의미할까? 이는 불변과 유사한 개념으로 컬렉션 프레임워크에서 사용되는 용어다. 번역한 그대로, 특정 컬렉션의 추가, 삭제, 수정(replace)연산을 허용하지 않는다. 언뜻보면 불변과 같아 보이는데 어떤 차이가 있을까? 가장 많이 사용하는 컬렉션인 List를 예로 들면, Collections.unmodifiab...