1. Spring과 Spring boot의 차이점
- Spring과 Spring boot는 모두 스프링 프레임워크를 기반으로 한 자바 웹 개발 프레임 워크읍니다. 둘 간에는 몇 가지 차이점이 있습니다.
- Spring은 개발자가 직접 설정 파일을 작성하고, 스프링 컨테이너를 구성하고, 필요한 빈 객체를 등록하고, 빈 객체간의 의존성을 설정해야하지만, boot는 프로젝트의 설정과 라이브러리 의존성을 자동으로 처리해 주는 기능을 제공하고 Jar파일을 만들 수 있다.
- MVC,JPA,Security등의 기능을 자동으로 설정해준다. Actuator라는 모니터링 모니터링 기능
2. 스크립트 언어와 컴파일 언어의 차이
- 이미 기계어로 번역된 파일을 컴퓨터가 실행하므로, 스크립트 언어에 비해 빠르고, 소스코드에 문법적 오류가 있으면 컴파일 에러를 발생시켜 디버깅이 수월하다. 하지만 문법적 제약이 있고, 운영체제마다 다르다.
- 파일을 실행하며 코드를 해석하기 떄문에 비교적 느리고, 디버깅이 힘들지만, 문법적 제약이적고, 운영체제를 신경 쓸 필요가 없다.
3. JPA[N+1]
- 데이터베이스에서 데이터를 검색할 때 발생할 수 있는 성능 문제중 하나입니다.
연관관계가 설정된 엔티티 사이에서 한 엔티티를 검색했을 때 조회된 엔티티의 개수 만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제입니다.
- N+1문제보다는 1+N 문제라고 부르는 것이 더 이해하기 쉬우며, 정리하면 다음과 같습니다.
엔티티 조회 쿼리(1번) + 조회된 엔티티의 개수 (N개) 만큼 연관된 엔티티를 조회하기 위한 추가쿼리 N번
Post 전체 조회
select * from post
comment조회
comment하나하나 select 쿼리가 발생하는 것을 보인다.
**fetch join**, **@EntityGraph**로 해결 할 수 있다.
4. 대용량 트래픽에서 장애가 발생한다면 대응하는 방법
- 스케일 업을 통해서 하드웨어 스팩을 향상시킨다.
- 스케일 아웃을 통해서 서버를 여러대 추가해 시스템을 사용한다.
- Redis를 사용한다. mongoDb를 사용한다. 불필요한 쿼리문을 줄인다.
5. JPA 사용이유
- JPA는 자바 진영의 ORM 기술 표준으로, 애플리케이션과 JDBC사이에서 동작하며, JPA를 구현한 대표 ORM 프레임워크는 하이버네이트이다.
- 반복적인 CRUD SQL쿼리문을 작성하지 않아도된다.
- 조회된 결과 객체 메핑 자동으로 처리해준다.
- 객체중심으로서 생산성을 높힌다.
- 밴더 독립성-> 다른 DB라도 JPA임을 알려주며됌
6.쿠키와 세션에 대해서 그리고 차이점
쿠키
- 쿠키는 클라이언트 측에 저장된다.
- 클라이언트 - 서버간 통신이다: 클라이언트가 웹 서버에 요청을 보낼 때, 쿠키는 해당 요청과 함께 전송된다.
- 상태유지 : 쿠키는 사용자의 상태 정보를 저장하고, 유지하는 데 사용된다.
- 유효 기간 설정: 쿠키는 만료 기간을 가진다.
세션
-세션측에 저장된다.
-클라이언트-서버 통신: 클라이언트가 웹 서버에 요청을 보낼 때, 세션 ID가 함꼐 전송되어서 서버에서 세션 데이터를 식별, 검색
-상태유지
-보안: 세션 데이터는 서버에 저장되기 때문에 보안적으로 안전하다. 하지만 많아 질 수록 부하가 걸릴 가능성이있다.
-세션 만료: 세션은 클라이언트가 로그아웃하거나 일정 시간동안 활동이없을 때 만료된다.
7.JWT토큰과 세션의 차이점
Java web Token인 줄 알았는데 Json web token이였다.. 하나 절대 안까먹을것 같다
1. 상태 없음(Stateless): JWT는 상태를 서버에 저장하지 않고 모든 필요한 정보를 토큰 자체에 포함한다. 이것은 서버가 사용자 상태를 저장하거나 관리하지 않아도 되는 상태 무결성(statelessness)의 특징을 가지고 있다.
2. 서버간 공유 불필요: JWT 토큰은 클라이언트와 서버 간에 주고 받으며, 서버 간에 토큰을 공유하는 필요가 없다. 이는 서로 다른 서버에서도 토큰을 검증할 수 있는 장점을 제공한다.
3. 자가 수용(Self-contained): JWT 토큰은 사용자의 정보와 추가적인 메타데이터를 포함하며, 이 모든 정보는 토큰 자체에 암호화되어 저장된다.
4. 확장성: JWT는 토큰 내의 클레임(claim)을 사용하여 사용자 정의 데이터를 저장할 수 있다.
차이점
1. 상태 관리: JWT는 상태를 서버에 저장하지 않고 토큰 자체에 저장하는 반면, 세션은 서버에 상태를 저장한다..
2. 서버 부담: JWT는 서버 간 공유 불필요하므로 서버 확장에 유리하지만, 세션은 서버 메모리를 사용하고 부하를 줄 수있다.
3. 보안성: 세션은 토큰보다 보안성이 높지만, JWT는 자가 수용적이며 클라이언트 측에서도 쉽게 검증 가능하다.
다음은 개발자의 글쓰기로 돌아올 예정
'CS' 카테고리의 다른 글
태태개발일지 - Docker (0) | 2025.04.16 |
---|---|
태태개발일지(소켓 통신) (0) | 2023.10.11 |
태태개발일지(운영체제) (0) | 2023.09.06 |
태태개발일지(운영체제) (0) | 2023.09.05 |
태태코딩(운영체제) (0) | 2023.08.31 |