인기 게시글
· Spring Boot
2024.01.07 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 0. 상황 설명 여러가지 방법을 사용해서 로그인 기능을 구현하려 함 공통인 기능과 코드는 이 게시글에서 모두 정리 방법마다 다른 코드는 각 게시물에서 따로 정리 * 구현한 로그인 기능 프로젝 blogan99.tistory.com 1. OAuth 란 ? 사용자가 비밀번호를 사용하지 않고 소셜 서비스 (구글, 카카오톡 등) 의 접근 권한을 현재의 다른 애플리케이션에 안전하게 위임할 수 있도록 하는 개방형 표준 프로토콜 쉽게 말하면 사이트에 회원가입하지 않고 구글, 카카오톡 등으로 로그인 하는 기능 액세스 ..
· Spring Boot
2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0) 2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (6) - 카카오 로그인 (OAuth 2.0) 구글, 카카오 로그인을 다뤘음 카카오 로그인 까지 수정된 코드를 수정하는 방식으로 네이버 로그인을 다룸 1. OAuth 사용 네이버 로그인 구현 1-1. 애플리케이션 추가하기 네이버 개발자 센터 ( https://developers.naver.com/main/ ) 접속 로그인 Application > 애플리케이션 등록 약관동의 계정 설정 (아래 정보 기입) 휴대폰 인증 이메일 애플리케이션 등록 (API 이용신청) 애플리케이션 이..
· Spring Boot
2024.01.07 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 0. 상황 설명 여러가지 방법을 사용해서 로그인 기능을 구현하려 함 공통인 기능과 코드는 이 게시글에서 모두 정리 방법마다 다른 코드는 각 게시물에서 따로 정리 1. 프로젝트 버전 정보 / DB 스 blogan99.tistory.com 0. 스프링 시큐리티란 ? 스프링 시큐리티에 대한 내용은 이전 게시물 ( 2024.01.07 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (3) - 스프링 시큐리티 로그인) 참고 1. JWT 란 ? JWT (Jason Web Token) :..
· Spring Boot
2024.03.15 - [Spring Boot] - [Spring Boot] JSON 객체 송수신 예제 [Spring Boot] JSON 객체 송수신 예제 1. JSON 이란 JSON : JavaScript Object Notation 데이터 저장, 전송 등에 사용되는 데이터 교환 형식 서버와 클라이언트 사이의 데이터 교환에 주로 사용됨 키 : 값 형태를 가짐 ex : "name": "홍길동" 2. 기본 클 blogan99.tistory.com 위의 게시물과 내용이 이어짐 1. JsonString 를 Object 로, Object 를 JsonString 으로 변환 방법 Json 형태로 입력받은 String을 Object로 변환 입력받은 Objcet 를 Json 형태의 String으로 변환 JSONPars..
· Spring Boot
2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0) [Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0) 2024.01.07 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 0. 상황 설명 여러가지 방법을 사용해서 로그인 기능을 구현 blogan99.tistory.com 지난 게시글에서 구글 로그인을 다룸 이번에는 카카오 로그인을 다루는데 지난 게시글의 코드를 수정/추가하는 형식으로 진행함 1. OAuth 사용 카카오 로그인 구현 1-1. 애플리케이..
· Spring Boot
2024.01.07 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 [Spring Boot] 로그인 기능 구현 (0) - 공통 기능, 코드 구현 0. 상황 설명 여러가지 방법을 사용해서 로그인 기능을 구현하려 함 공통인 기능과 코드는 이 게시글에서 모두 정리 방법마다 다른 코드는 각 게시물에서 따로 정리 1. 프로젝트 버전 정보 / DB 스 blogan99.tistory.com 1. 스프링 시큐리티 (Spring Security) 란 ? 스프링에서 제공하는 프레임워크, 애플리케이션에 인증, 인가 기능을 제공함 동작 원리 로그인 시도 시, 인증 필터가 작동하여 사용자의 id, 비밀번호를 가져옴 인증 필터는 id, 비밀번호를 Authenticati..
최신 게시글
1. 문제 상황 파악프로젝트에 STOMP를 통해 1:1 채팅 기능을 구현함페이지네이션 적용해 무한 스크롤까지 구현된 상황 채팅 전송위의 그림과 같은 순서를 가지며 매번 채팅을 전송할 때마다 DB에 접근함채팅 조회⇒ 다수의 사람이 채팅을 전송 및 조회할 때 모든 요청이 DB에 접근하게 된다면 과부하가 발생하거나 성능이 저하될 것이라고 판단해 성능 개선하려고 함 2. 해결 방법 및 현재 상황에 적용일반적인 방법 혹은 채팅 아키텍처가 아니지만 프로젝트 진행 도중 조금이라도 성능 개선할 수 없을까하는 생각에 도입함 2-1. 캐싱(caching)자주 사용되는 데이터를 임시 저장소 ( = 캐시, cache)에 저장해 동일한 요청이 들어왔을 때 더 빠른 응답이 가능하게 하는 기술캐시일반적으로 메모리에 위치함 (대표적..
1. 문제 상황 파악프론트엔드에서 무한 스크롤 기능을 추가함에 따라 백엔드에서 채팅 조회 시 페이지네이션을 적용함약 1000~2000개의 채팅 추가 후 확인 시 조금씩 느려짐을 확인함 데이터가 많아지면 느려지는 문제를 확인해보기 위해 아래의 과정대로 1,000,000개의 데이터를 삽입하고 테스트를 진행함1. 채팅 메시지 테이블에 1,000,000개의 샘플 데이터를 삽입2. 가장 마지막 20개의 채팅 조회⇒ 백만개의 데이터 (생성일 기준 내림차순) 중 가장 마지막에 해당하는 20개를 조회할 때 2.08초가 소요됨3. 그렇다면 데이터가 1억, 10억개 ... 등 더 많이 존재한다면 조회 시간이 기하급수적으로 늘어날 것이라고 판단해 성능 개선하려고 함 2. 문제 원인 파악2-1. 기존의 페이지네이션 기법off..
1. 문제 상황 파악쿠폰 보유 회원 목록 조회 시 CouponMember 테이블에서 특정 쿠폰 id에 해당하는 객체를 가져오는 메서드 호출함// CouponAdminService.java 의 findCouponMembers() 메서드 내부Page couponMembers = couponMemberRepository.findByCouponId(pageRequest, couponId);// CouponMemberRepository.javaPage findByCouponId(Pageable pageable, Long couponId);의도한 바는 쿠폰id를 비교해서 가져오는 쿼리 한 번 발생하는 것임⇒ 그러나 의도한 쿼리 이외에 쿼리가 3개 더 생성되었음! 추가적으로 발생한 3개의 쿼리는 쿠폰을 보유한 회원을..
1. 문제 상황 파악컨트롤러 단위 테스트 코드 작성 (@WebMvcTest 사용)시 아래와 같은 에러 발생// 에러가 발생한 테스트 코드@WebMvcTest(CartController.class)@AutoConfigureMockMvc(addFilters = false) // 필터 제외 (JWT 검증 제외)@TestMethodOrder(MethodOrderer.OrderAnnotation.class)@DisplayName("장바구니 컨트롤러 단위 테스트")class CartControllerTest { @Autowired private MockMvc mockMvc; @MockBean private CartService cartService; @Autowired private..
· DevOps
1. 로드 밸런싱네트워크 트래픽을 여러 서버로 분산시키는 기술하나의 서버에 부하가 집중되는 것을 방지 ⇒ 애플리케이션의 가용성과 성능 높일 수 있음! 1-1. 로드 밸런싱 필요성트래픽 분산사용자가 많은 애플리케이션 ⇒ 모든 요청이 단일 서버로 들어오면 해당 서버가 과부하 ⇒ 성능 저하로드 밸런서는 트래픽을 여러 서버로 분산시켜 이 문제를 해결 가능고가용성서버 중 하나가 장애가 발생하더라도 로드 밸런서는 자동으로 다른 서버로 트래픽을 우회시킴 ⇒ 서비스의 지속성 유지장애 조치(Failover)특정 서버에 장애 발생 ⇒ 이를 감지하고 자동으로 다른 서버로 요청 전환 ⇒ 서비스 중단을 최소화할 수 있음스케일링사용자가 증가함 ⇒ 서버 추가, 수평 확장 해야할 때 ⇒ 로드 밸런서는 새로운 서버를 쉽게 통합하여 트..
· CI,CD
1. AWS 이용한 배포 자동화1-1. AWS CodePipeline소스 코드 변경 사항을 자동으로 감지하고, 빌드 및 배포 프로세스를 자동화하여 지속적인 통합 및 배포(CI/CD)를 지원하는 서비스주로 세 가지 주요 스테이지로 구성됨소스 스테이지애플리케이션의 소스 코드가 저장된 위치에서 코드를 가져오는 단계일반적으로 GitHub, AWS CodeCommit, S3 등의 소스 리포지토리에서 소스를 가져옴빌드 스테이지소스 코드 컴파일 + 필요한 의존성 설치 + 애플리케이션 패키징하는 단계AWS CodeBuild 사용하여 이 과정을 자동화함배포 스테이지빌드된 애플리케이션을 실제 환경에 배포하는 단계다양한 AWS 서비스(AWS Elastic Beanstalk, Amazon ECS, AWS Lambda 등)를 ..
공대생안씨
공대생의 코딩 일기