본문 바로가기

전체 글323

CORS(Cross-Origin Resource Sharing, 교차 출처 자원 공유) 정의- 웹 브라우저에서 다른 출처의 리소스에 대한 접근을 제어하기 위한 보안 메커니즘 - 웹 애플리케이션이 자신이 로드된 도메인과 다른 도메인에서 리소스를 요청할 때 이를 허용하거나 거부하는 방식- CORS는 서버에서 설정하는 것이기 때문에 client에서는 완전히 제어할 수 없음 작동 방식1. 프리플라이트 요청 - client가 실제 요청을 보내기 전에 OPTIONS http method를 사용하여 서버에 Preflight 요청서버는 클라이언트의 출처와 요청 메서드, 헤더를 기반으로 요청을 허용할지를 판단2. 서버 응답 - 서버가 요청을 허용한다면 다음과 같은 응답 헤더를 포함Access-Control-Allow-Origin: 허용된 출처 (예: *는 모든 출처를 허용).Access-Control-Al.. 2024. 10. 23.
jQuery jQuery- 오픈소스 기반의 JavaScript의 라이브러리 중 하나- 기존 JavaScript 코드를 짧고 단순한 코드로 웹 페이지에 다양한 효과나 연출(HTML의 DOM 조작, 이벤트 핸들링, 애니메이션, Ajax)을 적용할 수 있음- Element(HTML 태그) 선택이 편리하고 효율적으로 제어할 수 있음- $() = jQuery 객체를 의미 (=jQuery())- $(HTML태그) 형식으로 지정한 HTML 태그 전체를 지정 - HTML 파일에서 마지막 부분에 jQuery CDN에 있는 버전별 script 코드를 복사+붙여넣기하여 세팅- $(document).ready(function(){}) = $(function(){}) = DOM이 생성되면(위 -> 아래 순으로 모든 코드를 읽은 후 실행).. 2024. 10. 23.
DOM 정의- Document Object Model- XML이나 HTML 문서의 태그들을 JavaScript를 통해 객체로 조작할 수 있도록 API를 제공하는 인터페이스 DOM 객체의 구성요소- property = DOM 객체의 변수 HTML 태그의 속성- method = DOM 객체의 함수- collection = DOM 객체의 배열- eventListener = HTML 태그의 이벤트 리스너- style = HTML 태그의 CSS  데이터 타입- document = 웹 페이지 그 자체를 의미하는 객체이자 DOM 트리의 최상위 객체 - element = DOM 트리에서 XML이나 HTML 태그를 가리키는 객체 - nodeList = element의 배열 (Array와는 다르지만 list[0]처럼 index를.. 2024. 10. 22.
IAM(Identity and Access Management) 정의- AWS에서 제공하는 사용자 접근 권한 관리 서비스- AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스(RDS, S3, EC2 등)에 대한 액세스를 허용 및 거부 설정함으로서 전반적인 사용자 관리를 할 수 있도록 해줌- 단순히 엑세스 권한 설정 뿐만 아니라 언제 어디서 누가 무엇을 어떻게 할 수 있도록 제안을 설정할 수도 있음- AWS는 AWS 리소스에 대한 접근 권한을 기본적(default)으로 미부여하도록 설정되어 있어 AWS의 특정 리소스를 접근하려면 IAM을 통해 권한을 허용해줘야 함 구성 요소사용자(User)- AWS의 기능과 자원을 이용하는 사람 혹은 어플리케이션- 각 사용자 별로 권한을 부여할 수 있음ex) A - S3, B - RDS, C - EC2, D - S3, EC2, E .. 2024. 9. 15.
S3(Simple Storage Service) 정의- AWS에서 제공하는 온라인 객체 스토리지 서비스 (일종의 파일 저장 서비스)- 구글 드라이브처럼 데이터를 온라인에 객체(Object) 형태로 저장- 주로 백엔드에서 파일 업로드/다운로드 기능을 구현할 때 사용- 저장 용량이 무제한이며 EC2와 EBS 보다 가격이 훨씬 저렴함- S3에서 저장소의 단위를 버킷(Bucket), 파일의 단위를 객체(Object)로 정의 (객체 = S3 버킷에 업로드된 파일)※ 버킷 = GitHub의 Repository와 비슷한 개념 업로드/다운로드 과정(이미지)업로드다운로드기본 세팅버킷 생성1. AWS 로그인 후 S3 대시보드 접속 → 버킷 만들기 클릭2. 퍼블릭 엑세스 차단 해제 + 경고 메시지의 인지 확인 버튼 체크 3. 나머지 설정은 기본값으로 세팅 → 버킷 생성 .. 2024. 9. 14.
RDS(Relational Database Service) 정의- AWS에서 제공하는 관계형 데이터베이스(RDB) 서비스- 주로 백엔드 서버와 연결할 DB를 생성하고 관리하기 위해 사용- EC2 인스턴스에 RDB를 설치하여 운용 가능하지만 예기치 못한 에러로 인하여 인스턴스가 죽을 경우 DB의 데이터가 날아갈 위험성이 존재 ※ GCP 기준 SQL 기본 세팅DB 인스턴스 생성1. AWS 로그인 후 RDS 대시보드 접속 - 데이터베이스 생성 클릭 → 원하는 DB 종류 선택2. 마스터(admin) ID, 비밀번호 설정※ 편리하게 마스터 로그인 정보를 관리할 수 있는 AWS Secrets Manager도 있으나 비용이 더 청구됨 (백엔드의 yml 파일이나 properties 파일에 DB 정보를 하드코딩하는 대신 다음과 같은 형식으로 입력)datasource: driv.. 2024. 9. 13.
EC2(Elastic Compute Cloud) 정의- AWS에서 원격 VM 인스턴스(하나의 컴퓨터)를 생성하여 사용하는 서비스- 주로 백엔드 서버를 배포하기 위한 VM 인스턴스 생성에 사용※ 프론트 웹 페이지도 배포 가능하지만 주로 프론트는 Netlify, AWS S3 등을 사용  ※ GCP 기준 Compute Engine - VM 인스턴스  리전(Region)- AWS의 인프라를 지리적으로 나누어 배포한 각각의 데이터 센터의 지역- 애플리케이션의 주 사용자들의 위치와 가까운 리전의 VM 인스턴스를 생성하는 것이 유리 기본 세팅1. AWS 로그인 후 EC2 대시보드 접속 - 인스턴스 시작(생성) 클릭 → 다음과 같이 설정(OS 종류: Ubuntu, 인스턴스 유형: t2-micro)  ※ OS는 Windows나 Mac 보다 서버 배포에 필요한 기능만 .. 2024. 9. 12.
CopyOnWriteArrayList 정의- java.util.concurrent.CopyOnWriteArrayList- Java에서 제공하는 스레드 안전한 리스트 클래스  - 리스트의 크기가 매우 크고 변경이 빈번한 경우에는 성능 저하가 발생할 수 있음 특징스레드 안전성: 리스트의 내용을 변경하는 작업이 복사본을 만들어 쓰기 때문에 다른 스레드가 영향을 받지 않아 여러 스레드가 동시에 CopyOnWriteArrayList에 접근해도 안전하게 사용 가능 읽기 작업이 많은 상황에 적합: 리스트에 대한 변경이 드물고, 대신에 자주 읽기 작업이 발생하는 경우에 유용내부 복사: 리스트에 요소를 추가하거나 제거할 때마다 내부적으로 새로운 배열이 생성되어 변경 작업이 빈번하지 않은 경우에는 효율적이지만 변경 작업이 많이 발생하는 경우에는 성능이 저하될.. 2024. 5. 2.
EventSource 정의- 서버로부터 실시간 이벤트 스트림을 수신하는 데 사용되는 JavaScript의 기능 - 웹 페이지에서 사용자에게 실시간 업데이트를 제공하거나 서버에서 발생하는 이벤트를 수신하여 처리하도록 해줌- 서버-클라이언트 간의 단방향 통신에 주로 활용 (Ex - SSE)  특징단방향 통신: EventSource는 서버에서 클라이언트로의 단방향 통신을 지원하기 때문에 클라이언트는 서버로부터 데이터를 수신할 수 있지만 서버로 데이터를 전송할 수 없음HTTP 프로토콜 사용: EventSource는 HTTP 프로토콜을 통해 서버와 클라이언트 간의 통신을 수행하며 서버는 Content-Type이 text/event-stream으로 설정된 HTTP 응답을 보내고, 클라이언트는 이를 수신하여 이벤트 스트림을 처리합니다.이.. 2024. 5. 2.
SseEmitter 정의- org.springframework.web.servlet.mvc.method.annotation.SseEmitter- Spring에서 SSE(Server-Sent Event)를 구현하기 위한 클래스 특징- 클라이언트로 텍스트 기반의 이벤트 전송 (String이 아닌 데이터들 toString() 필수)- 클라이언트와의 연결 유지, 데이터 전송, 연결 종료 기능을 제공- 실시간 업데이트 혹은 클라이언트에서 서버로부터 비동기적으로 데이터 수신 시에 주로 사용 주요 메소드- send() = 클라이언트로 이벤트 전송- complete() = SSE 연결 종료- completeWithError() = SSE 연결을 오류 상태로 종료- onCompletion() = SSE 연결이 종료될 때 수행할 작업 정의 .. 2024. 4. 29.
SSE, Polling, Socket SSE(Server-Sent-Event)정의- 서버에서 클라이언트로의 단방향 통신을 가능하게 하는 웹 기술 (단방향 소켓)- 주로 실시간 업데이트 상황에서 사용 - SSE를 통해 클라이언트는 서버로부터 업데이트된 정보를 받아 화면에 즉시 반영할 수 있음특징단방향 통신: SSE는 서버에서 클라이언트로의 단방향 통신을 지원→ 클라이언트는 서버로부터 데이터를 받을 수만 있고 서버는 클라이언트로부터 데이터를 받을 수 없음이벤트 스트림: 서버는 연결된 클라이언트에게 일련의 이벤트를 스트림으로 전송→ 이벤트는 일반적으로 텍스트 형식으로 이루어져 있고, 클라이언트는 이를 받아서 처리 가능장애 복구: SSE 연결은 HTTP 연결을 기반으로 하며, 이는 HTTP 프로토콜을 따름→ 네트워크 장애 또는 기기 재부팅과 같.. 2024. 4. 26.
Wireshark 정의- 네트워크 프로토콜 분석 도구로 컴퓨터 네트워크에서 전송되는 데이터를 실시간으로 캡처하고 분석할 수 있도록 해줌 특징네트워크 트래픽 모니터링: 실시간으로 네트워크 트래픽을 모니터링하여 네트워크 성능 및 문제 파악 가능프로토콜 분석: 다양한 네트워크 프로토콜 분석 및 각 패킷의 헤더와 데이터 확인 → 프로토콜 동작 이해 가능네트워크 보안 분석: 악의적인 행위나 보안 문제를 탐지하기 위해 네트워크 트래픽을 검사 및 분석 가능네트워크 문제 해결: 네트워크에서 발생하는 문제를 식별하고 해결하기 위해 트래픽을 분석하여 원인 파악 가능기본 화면 구성 요소- No = 패킷을 수집한 순서 - Time = 패킷이 수집된 시간 - Source = 패킷을 보낸 주소 - Destination = 패킷 도착 주소 - Pr.. 2024. 4. 25.
Spring Data Redis 정의- Spring Boot와 Redis 간의 상호작용이 가능하도록 제공하는 Spring Boot 외부 라이브러리- Redis를 DB 또는 캐시로 사용하는 경우에 사용 (세션 관리일 경우에는 Spring Session Data Redis 사용)- RedisTemplate 클래스를 사용하여 Redis와의 상호작용을 지원implementation 'org.springframework.boot:spring-boot-starter-data-redis' RedisTemplate정의 및 특징- Redis에 데이터를 저장, 검색, 갱신 및 삭제하는 데 사용 (CRUD)- 직렬화/역직렬화, 트랜잭션 처리, 파이프라인 지원 등을 포함한 다양한 기능을 제공 - Redis 트랜잭션 지원- Redis 파이프라인 지원- 제네릭.. 2024. 4. 18.
Session 타임 아웃 설정 필요성 - 사용자가 웹 사이트를 떠나거나 일정 시간 동안 아무런 활동을 하지 않을 때 세션을 자동으로 종료시켜 보안을 강화하고 서버 리소스를 효율적으로 관리할 수 있음 → 일정 시간이 지나면 자동 로그아웃 - 세션은 서버의 메모리에 저장되는데 별도의 타임 아웃 설정 없이 무한정 보관하게 되면 메모리 초과로 인하여 서버에 과부하가 올 수 있음 - 유저의 세션을 해커가 탈취했을 때 서버쪽에서 해당 유저의 세션이 살아있다면 악의적인 접근 및 공격이 가능함 적용 방법 - HTTP Session은 기본 생명 주기가 30분 - application.properties에서 다음 설정을 입력 ※ 두 속성 모두 기본 단위는 초(s)이며 m(분), h(시) 입력 가능 server.servlet.session.timeout.. 2024. 4. 15.
RestTemplate와 WebClient RestTemplate정의- org.springframework.web.client.RestTemplate- Spring 프레임워크에서 제공하는 HTTP 통신을 간편하게 처리할 수 있는 동기적인 클라이언트 - REST API를 위한 다양한 메서드를 제공하여 개발자가 HTTP 요청을 손쉽게 보내고 응답을 처리할 수 있도록 지원 - Spring Boot에 기본 탑재되어 있어서 별도 import 필요 X 특징- 멀티 스레드- Blocking I/O 주요 메소드- getForObject() = HTTP GET + 결과값 Object로 반환- getForEntity() = HTTP GET + 결과값 ResponseEntity로 반환 - postForLocation() = HTTP POST + 결과값으로 헤더에 .. 2024. 4. 12.