728x90
반응형
- REST란 무엇인가요?2025-08-25 15:08:26REST(Representational State Transfer) 는 자원의 표현을 이용하여 상태를 주고받는 것을 의미합니다. 여기서 자원이란 소프트웨어가 관리하는 모든 것을 의미하며 자원의 표현은 자원을 나타내기 위한 이름을 의미합니다. 가령, 서버가 관리하는 주문 데이터는 order 라고 표현할 수 있습니다. 최근에는 일반적으로 자원의 상태를 나타내기 위해 JSON 포맷을 사용합니다. REST는 네트워크 상에서 클라이언트와 서버의 통신 방식 중 하나이며, HTTP 프로토콜을 사용합니다. 구체적으로는 HTTP URI를 활용하여 자원을 명시하고 HTTP METHOD를 통해 CRUD 연산을 적용하는 것을 의미합니다. API(Application Programming Interface) 란 컴퓨터 프로그램..
- 동시성과 병렬성에 대해서 설명해주세요.2025-08-08 11:47:17동시성(Concurrency)이란?동시성이란 이름처럼 실제로 여러 작업을 동시에 수행하는 것이 아니라, 논리적으로 동시에 실행되는 것처럼 보이게 만드는 개념입니다.단일 코어를 기준으로 시간 분할을 통해 여러 스레드를 번갈아 가며 작업을 수행함으로써, 마치 동시에 여러 작업이 처리되는 것처럼 보이게 합니다.사용자의 입력을 기다리거나, 네트워크 요청, 파일 입출력 등의 I/O 작업 시에는 CPU가 유휴 상태로 대기하게 됩니다.이때 CPU가 아무 일도 하지 않고 대기하는 대신, 컨텍스트 스위칭을 통해 다른 스레드의 작업을 처리할 수 있습니다.이러한 특성 덕분에 서버는 여러 클라이언트의 요청을 동시에 처리할 수 있어 효율적입니다.다만, 동시성 환경을 신중하게 고려하지 않으면 여러 스레드를 사용하면서 Deadlo..
- 로드 밸런싱에 대해서 설명해주세요2025-08-07 08:36:13로드 밸런싱이란 애플리케이션을 지원하는 리소스 풀에 들어오는 네트워크 트래픽(들어오는 요청)을 균등하게 분산하는 것을 의미합니다. 이를 수행하는 로드 밸런서는 애플리케이션 서버 앞단에 위치하며 클라이언트 요청을 지시하고 제어합니다.이를 통해서 애플리케이션의 가용성, 확장성, 보안 및 성능을 확보할 수 있습니다.알고 계신 로드 밸런싱 알고리즘이 존재하나요? 🤔라운드 로빈(Round Robin) 방식은 모든 요청이 순서대로 처리되는 방식입니다.서버가 3대(A, B, C)가 존재하면 요청은 ABCABC 순서대로 전달됩니다.모든 서버의 처리 능력이 동등하고, 요청의 고른 분산이 중요한 경우 고려해볼 수 있습니다.구현이 쉬우며 고른 분산을 보장한다는 것이 장점입니다.하지만, 서버 부하나 응답 시간을 고려하지 않..
- 트랜잭션 격리수준은 무엇인가요?2025-06-29 15:15:15트랜잭션의 격리 수준은 동시에 여러 트랜잭션이 실행될 때 한 트랜잭션이 다른 트랜잭션의 연산에 영향을 받지 않도록 하는 정도를 말합니다. 낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있습니다. 반면, 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있습니다. 즉, 데이터 정합성과 성능은 반비례합니다. 트랜잭션 격리 수준은 개발자가 트랜잭션 격리 수준을 설정할 수 있는 기능을 제공하는 기능입니다.트랜잭션 격리 수준은 어떤 것이 있고 각각 어떤 특징이 있나요? 🤔트랜잭션 격리 수준은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ가 존재합니다.READ UNCOMMITTED는 커밋이 되지 않은 트랜잭션..
- 복합키 vs (대칭키 + UNIQUE 제약 조건) 회의록2025-06-20 15:24:57상황북마크 테이블은 TIL Bookmark 와 CodePost Bookmark로 나뉘어 있기 때문에 팀원 A는 TIL을 담당하고 나는 CodePost를 담당하였다.이 후 도메인 구조를 살펴보니 A는 post_id와 email을 통해 복합키로 구성하였고, 나는 auto_increment 대칭키와 post_id, member_id를 유니크 제약 조건으로 설정하여 구현하였다. @EqualsAndHashCodepublic class TILBookmarkId implements Serializable { private String email; private Long postId;} @IdClass(TILBookmarkId.class)@Entitypublic class TILBookmark { @I..
- Spring Data JPA에서 새로운 Entity인지 판단하는 방법은 무엇일까요?2025-06-17 21:39:26@Overridepublic boolean isNew(T entity) { if(versionAttribute.isEmpty() || versionAttribute.map(Attribute::getJavaType).map(Class::isPrimitive).orElse(false)) { return super.isNew(entity); } BeanWrapper wrapper = new DirectFieldAccessFallbackBeanWrapper(entity); return versionAttribute.map(it -> wrapper.getPropertyValue(it.getName()) == null).orElse(true);}새로운 Entity인..
- Filter와 Interceptor의 차이점을 말해주세요.2025-06-12 12:27:44FilterFilter는 요청 및 응답의 전처리와 후처리를 수행하고 서블릿 컨테이너에 의해 실행되는 Java 클래스입니다. 주로 요청 로깅, 인증, 인코딩 설정, CORS 처리, 캐싱, 압축 등의 공통 기능을 구현하는 데 사용됩니다.특징Filter는 서블릿 컨테이너(예: Tomcat) 수준에서 동작합니다. 모든 요청이 서블릿으로 전달되기 전에 Filter를 거칩니다.생명 주기: Filter는 doFilter 메서드를 통해 요청 및 응답을 처리합니다. FilterChain을 통해 다음 필터 또는 최종 서블릿으로 요청을 전달합니다.순서: web.xml이나 @WebFilter 애노테이션을 통해 설정할 수 있으며, 필터의 순서는 설정 파일에서 정의합니다.InterceptorInterceptor는 특정 핸들러 메..
- Spring MVC의 실행 흐름에 대해 설명해주세요.2025-06-04 13:14:32[View를 응답하는 경우]클라이언트로부터 HTTP 요청이 들어옵니다. 이때 DispatcherServlet이 프론트 컨트롤러의 역할을 수행합니다.HandlerMapping을 통해 URL에 매핑된 핸들러를 조회합니다.DispatcherServlet은 찾은 핸들러를 실행하기 위해 HandlerAdapter를 사용합니다.HandlerAdapter가 실제로 요청을 처리하는 메서드를 호출합니다.컨트롤러는 결과 데이터를 Model 객체에 담고, View 이름을 반환합니다.ViewResolver는 View 이름을 기반으로 적절한 뷰를 찾습니다.ViewResolver가 찾은 뷰를 사용해 최종적으로 HTML과 같은 응답을 생성합니다.[Message Converter의 동작]JSON과 문자열 등을 응답하는 경우는 Vie..
728x90
반응형