목록전체 글 (65)
be programmer
Redis(Remote Dictionary Server)는 메모리(RAM)에 데이터를 저장하여 매우 빠른 속도를 제공하는 오픈소스 기반의 인메모리(In-Memory) 키-값(Key-Value) 구조의 NoSQL 데이터베이스 관리 시스템(DBMS)이다.디스크에 직접 데이터를 쓰는 일반적인 관계형 데이터베이스(RDBMS)와 달리, 메모리에서 데이터를 처리하므로 1밀리초(ms) 미만의 매우 빠른 읽기 및 쓰기 속도를 자랑합니다.
현재 내가 배포까지 할때 사용한 코드는 이것인데public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOriginPatterns("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowCredentials(true); }gemini에게 자문을 구해보니, 다음과 같이 수정해서 사용하길 바란다고 한다.1. CSRF(교차 사이트 요청 위조) 공격 노출.allowedOriginPatterns("*")와 .allowCredentials(true)가 동시에 켜져 있으면, 악의적인 제3의 사이트에서도 사용자의 쿠키나 인증 정보를 이용해 이 ..
MSA 방식으로 홈쇼핑을 개발하던 와중, 나는 DB에 무결성을 지킨다고 하는것이, DB에는 getter 역할을 하는것 외에 어지간하면 아무것도 안들어가는것이 무결성을 보존한다고 여기고 있었다.왜냐하면 Entity에는 무결성 보존을 위해 setter 어노테이션을 사용하지 않는것이 권장되었기 때문이다.하지만 다른 홈쇼핑 개발한 코드들을 본 결과 내 생각이 틀렸다.Setter는 객체의 문을 완전히 열어두는 위험한 행동이지만, 비즈니스 메서드는 유효성 검증과 비즈니스 규칙을 세우는 것이라 오히려 무결성이 보존되기 때문이라고 한다. 오히려 이렇게 갖다놓아져 있어야 객체 지향 프로그래밍의 원칙 중 하나인 캡슐화가 보장이 된다고 한다.AI에게도 질문해 보니 다음의 예시를 들어주었다.Setter의 문제점 (produc..
🗃 리눅스의 주요 디렉토리bin기본 명령어들이 저장된 디렉토리boot부팅에 필요한 가진 파일들이 저장되는 곳dev시스템 디바이스 관련 파일들이 저장되는 것etc시스템 설정에 관련된 각종 파일들이 저장되는 곳home사용자의 홈 디렉토리가 생성되는 곳lib커널과 프로그램에 필요한 각종 라이브러리가 저장되는 곳mediaCD, USB같은 외부 장치를 연결하는 곳mnt탈부착 가능한 장치들을 임시로 연결하는 곳(WSL의 경우 윈도우의 디렉토리와 연결)opt추가 패키지가 설치되는 곳rootroot(최고관리자)계정의 홈 디렉토리run실행중인 서비스와 관련된 파일들이 저장되는 곳sbin시스템 관리자용 명령어들이 저장되는 곳sys리눅스 커널 관련 정보가 있는 곳tmp시스템 사용중 발생하는 임시데이터가 저장되는 곳usr기..
Spring 환경에서 기존 jakarta.servlet.http.Cookie 대신 org.springframework.http.ResponseCookie를 사용할 때 얻는 가장 큰 장점은 강력한 보안 옵션 지원과 빌더 패턴을 통한 높은 편의성입니다.구체적인 장점을 비교 분석해 드리겠습니다.1. 크로스 도메인 보안 (SameSite 속성 지원)기존 Cookie: SameSite 속성을 직접 설정하는 메서드가 없습니다. 크롬 등 최신 브라우저의 CSRF 차단 정책에 대응하기 위해서는 response.setHeader("Set-Cookie", "...")와 같이 문자열로 직접 헤더를 포매팅해야 했습니다.ResponseCookie: .sameSite("Lax"), .sameSite("Strict"), .same..
환경: AWS EC2 t3.micro (RAM 1GB / EBS 디스크 기본 8GB / Ubuntu OS)1️⃣ [시작] AWS EC2 접속 및 네트워크 세팅1. EC2 터미널 접속AWS EC2 콘솔 ➔ [인스턴스] ➔ sekai-server 선택 ➔ [연결] (EC2 Instance Connect)를 통해 웹 터미널 접속.터미널은 여러 탭으로 복제(우클릭 ➔ 탭 복제)하여 동시에 작업 가능.2. 올바른 외부 접속 주소 (URL)❌ https://172.31.x.x:8081 (사설 IP 및 SSL 미설정으로 접속 불가)⭕ http://[EC2 퍼블릭 IP 또는 탄력적 IP]:8081AWS 사설 IP(172.31.x.x)는 EC2 내부용이므로, 외부 브라우저에서는 퍼블릭 IP로 접속해야 함.2️⃣ [이슈 ..
이전에 구현한 Spring 기반 크롤러 사이트가 어느정도의 부하를 견딜수 있는지 궁금했다. nGrinder라는 것이 있어서 이것을 통해 알아보기로 했다. nGrinder는 다음과 같은 방식으로 작동된다. 설치설치는 다음의 사이트에서 war파일을 다운로드 받고, 아래 명령어 입력해서 할수 있다.https://github.com/naver/ngrinder/releases Releases · naver/ngrinderenterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.github.com java "-Djava.io.tmpdir=C:\Users\u..
1. HTTP Stateless(무상태성)와 상태 유지 기법 무상태성(Stateless)이란?HTTP 프로토콜은 서버가 이전에 자기를 찾아왔던 클라이언트(사용자)를 기억하지 못한다는 특징이 있습니다.즉, 사용자가 로그인을 하고 다음 페이지로 이동했을 때, 서버는 "아까 그 사람이네?" 하고 알아보지 못합니다.장점: 서버가 사용자의 상태를 일일이 기억하고 있을 필요가 없어서 메모리가 절약되고, 서버를 여러 대 늘리기(확장하기) 쉽습니다.단점: 로그인 상태를 유지해야 하는 웹서비스에서는 매번 누군지 증명해야 하는 번거로움이 생긴다.상태를 유지하기 위한 기술들 (극복 방법):Cookie (쿠키): 사용자의 브라우저에 저장하는 작은 메모지 같은 데이터입니다. 서버가 로그인한 사용자에게 "너는 1번 회원이야"라고..
