목록전체 글 (91)
seaking110 님의 블로그
도커 설치도커를 먼저 설치해보자윈도우에서 도커를 진행하기 위해선 환경을 먼저 설정하고 도커를 설치해야한다!WSL2를 이용하기 위해window 기능의 Linux용 Windows 하위 시스템을 체크다른 블로그에선 hyper -v 를 사용하나 현재 윈도우를 home을 이용하고 있어서 hyper -v는 지원하지 않았다.도커 설치sudo apt-get updatesudo apt-get install ca-certificates curl gnupg# docker engine 설치sudo apt-get install -y docker-ce docker-ce-cli containerd.io \docker-buildx-plugin docker-compose-plugin docker-compose# docker 그룹에 현..
캐시느린 저장소 앞에 위치한 빠른 저장소CPU 나 DB 앞에 존재캐시의 대표적인 오픈 소스 서비스가 Redis단순한 구조와 in-memory 저장소로 인한 빠른 성능 때문에 캐시에 주로 쓰임 캐시 전략과 정책캐시 적중/미스Cache Hit VS Cache MissCache Hit사용자가 요청한 데이터가 이미 캐시에 존재하는 경우이 경우 데이터를 빠르게 반환 가능사용자가 특정 유저 정보를 요청했을 때 해당 유저 데이터가 Redis에 이미 저장되어 있다면 바로 반환응답 속도가 매우 빠름백엔드 시스템의 부하가 줄고 트래픽 비용이 절감Cache Miss요청한 데이터가 캐시에 없을 경우를 의미이때는 원본 저장소에서 데이터를 가져오고 일반적으로 캐시에 저장한 뒤 반환Cold Miss (콜드 미스) 캐시에 처음 저장..
Docker & CICD Docker소프트웨어 개발과 배포를 도와주는 컨테이너 기술도커를 사용하여 애플리케이션을 빌드, 배포, 실행하는 과정을 쉽게 관리 가능 먼저 Container라는 단어를 이해해보자CD를 생각하면 쉬움CD가 Docker 이미지, 실행된 프로그램이 Container라고 생각하면 됨CD만 있다면 친구네 컴퓨터로도 똑같이 프로그램을 실행 가능 애플리케이션과 그 실행 환경을 함께 페이징하여 어디서든 동일하게 실행될 수 있도록 해주는 기술도커를 사용하는 이유일관성 : 내 컴퓨터에서는 잘 되는데..와 같은 문제 줄어듬이식성 : 컨테이너는 어디서든 동일한 환경을 제공하므로 다양한 플랫폼에서 쉽게 애플리케이션을 실행할 수 있음확장성 : 컨테이너를 이용한 마이크로 서비스 아키텍쳐를 통해 애플리케이션..
AWS특징유연성 : 필요한 만큼만 사용, 필요 없으면 끄면 됨확장성 : 트래픽이 늘어나면 자동으로 확장 가능비용 절감 : 초기 서버 비용 없이 시작 가능 - 프리티어글로벌 인프라 : 전 세계 여러 리전에 인프라 구축 가능EC2가상 서버를 제공하는서비스흔히 말하는 서버를 AWS에서 제공핵심 개념CPU, 메모리, 스토리지, 네트워크 등을 가진 가상의 컴퓨터리눅스/ 원도우 우분투 선택 가능SSH로 직접 접속해 앱 설치 가능특징원하는 인스턴스 타입 선택 가능스냅샷으로 백업 및 복원 가능Auto Scaling Load Balancing과 연계 가능ECS Docker 컨테이너 기반 애플리케이션을실행하는 서비스핵심 기능Docker 이미지를 실행하는 환경특징컨테이너 기반으로 경량화된 배포 가능자동 스케일링 헬스체크 가..
트러블 슈팅 1. JWT 토큰을 이용한 인증 방식에서 Spring Security 추가 시 테스트 코드 오류 문제 발생문제 상황Spring Security를 추가한 후, 아래와 같은 오류 발생Parameter 0 of constructor in org.example.expert.config.JwtAuthenticationFilter required a bean of type 'org.example.expert.config.JwtUtil' that could not be found.문제점Spring Security를 추가한 뒤 테스트에서 필터 체인을 넘어가지 못하는 문제 발생해결 방법방법 1: @WithMockUser를 사용하여 인증된 사용자 역할을 부여@WithMockUser를 이용해 테스트에서 인증된 ..
Plus 주차 개인 과제를 진행하며 배운 점 정리 Level 13. 코드 개선 퀴즈 - JPA의 이해할 일 검색 시 weather 조건으로도 검색할 수 있어야해요.weather 조건은 있을 수도 있고, 없을 수도 있어요!할 일 검색 시 수정일 기준으로 기간 검색이 가능해야해요.기간의 시작과 끝 조건은 있을 수도 있고, 없을 수도 있어요! 조건은 날씨와 수정일 기준의 기간 검색으로 필터가 추가되는 방식 @GetMapping("/todos") public ResponseEntity> getTodos( @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size, ..
Root Account회원 가입 시 만들어지며 권한이 너무나도 강력하기 때문에 사용/ 공유 를 하지 않는 것이 좋다User와 Group을 만들어서 사용Group : 개발자/운영과 같이 유저 종류를 지정User : 실제 로그인 하는 사람User는 Group에 속할 수도 속하지 않을 수도, 여러 그룹에 속할 수도 있다.Policy를 통해 권한을 조정최소한의 권한 원칙을 지켜야함 (반드시 필요한 권한만 주기) EC2물리적인 서버가 설치되어 있고 가상화된 컴퓨터 환경인 인스턴스를 생성EC2 인스턴스 주요 사용 사례웹 애플리케이션 호스팅데이터베이스 호스팅컴퓨팅 작업애플리케이션 개발 및 테스트EC2 인스턴스를 연 후HTTP, HTTPS에서 접근을 허용하기우분투 인스턴스를 연결sudo apt-get update su..
Spring Security스프링 기반의 애플리케이션 보안을 담당하는 프레임워크필터 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작Filter은 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받음Interceptor은 Dispatcher와 Controller사이에 위치함즉 둘은 적용 시기에 차이점이 있음Client → Filter → DispatcherServlet → Interceptor → Controller Spring Security 아키텍쳐클라이언트가 요청을 전송서버가 요청을 받음서버가 필터 체인을 생성필터 체인은 여러개 의 필터와 서블릿이 포함필터의 역할요청을 차단요청이나 응답을 수정필터를 거친 후 최종적으로 서블릿이 실행 Servlet..
Spring Security2003년부터 개발된 JWT보다 10년 이상 오래된 도구따라서 JWT가 없던 시대부터 사용되어와서 JSP 등 SSR 방식과 연관된 스펙이 매우 많음다시말해 세션 방식과 결합된 JWT가 Spring Security에 결합되어 너무 많이 사용되고 있다.해당 방식은 잘못된 방식! (Stateless 문제)AbstractAuthenticationToken을 set 해줘야 한다 Security 컨텍스트에다가!!UserDetatilsServiceImpl를 사용하면 Stateless라는 JWT 개념과 매우 강하게 충돌!!UserDetatilsService는 DB에 접근해서 유저 정보를 가져옴 즉 세션을 위한 스펙따라서 JWT를 쓸 이유가 없어짐!! 이렇게 하면 안됨!!기존 JWTutil 코..
양방향cascade이나 orphanRemoval을 배우는 이유는 면접에서 나오기 때문실무에서 사용하지 않는 이유는 사이드 이펙트 때문당장은 괜찮으나 프로젝트가 나중에 시간이 흐른 뒤에 유지보수하기 매우 어렵기 때문에비슷하게 DB의 트리거 역시 이를 지양 FetchType.EAGER 대신 FetchType.LAZY를 사용하는 것도 이와 비슷한 관점EAGER은 사이드 이펙트를 유발 문제를 간단히1 : 1 , 1 : N, N : N 등 너무 복잡 그냥 @ManyToOne을 쓰자! (FetchType.LAZY와 함께)먼저 OneToOne 역시 반드시 필요한 것인지 생각하기1 대 1은 꼭 필요한 경우도 있긴함양방향은 안전하게 쓰지 않는 것을 개인적으로 추천하긴 함하지만 잘 쓰면 개발이 빨라지고 코드량이 적어지므로..