본문 바로가기

내배캠/TIL

(60)
gateway http header too large 오류 해결 MSA로 전환하며 Gateway와 Eureka를 도입하여 Gateway, Auction, Point 서버를 Eureka에 등록하는 것까지 성공했지만 Gateway를 통해 요청을 보낼 때 계속 gateway http header too large (error code: 431) 오류가 발생했다. 헤더 설정 길이를 늘려주면 해결될 줄 알고 계속 늘려갔는데아무리 늘려도 계속해서 부족하다는 오류가 발생했다. https://docs.spring.io/spring-cloud-gateway/reference/appendix.html Common application properties :: Spring Cloud GatewayVarious properties can be specified inside your app..
[스프링] @SpringBootTest 관련 트러블슈팅 프로젝트를 진행하던 중 대용량 데이터(백만건)를 넣고 조회 성능을 향상시키라는 요구사항이 있었다. 직접 포스트 맨에서 하나 하나 넣을 수 없으니 테스트 코드로 for문을 돌려 batchUpdate를 이용해 한 번에 저장할 수 있도록 했다.  그래서 통합 테스트를 하는데 테스트 자체가 ignored가 되는 문제가 발생했다.  이런 적은 처음이라 검색하던 중, @ContextConfiguration을 붙여주라는 글이 대부분이라 붙여줬더니 이젠 ignored가 되는 대신 다른 에러가 뜨기 시작했다. 읽어보니 의존성 주입이 안됐다는 오류인 것 같았다. 분명히 @Autowired를 붙여줬는데도 해결되지 않아 각 controller, service 계층에서 필요한 의존 관계에 전부 @Autowired를 달아주었다...
[AWS] RDS 생성 및 연동하기 우선 Region이 현재 Seoul로 되어 있는지 확인한다. 검색하든 옆에 바에서 찾든 rds로 들어가서 create database 버튼을 클릭한다.   mySQL로 진행.  건드릴 거 없이 쭉쭉 넘어간다.  돈 없는 백수라면 꼭 Free tier 선택하기!  원하는 db instance 이름 짓고 username과 password를 설정한다. 이 둘은 나중에 써야 하므로 반드시 기억하자!  db.t4g.micro 해도 된다. 이것도 공짜. 성능도 더 좋다. 근데 혹시 몰라서 돈 나갈까봐 db.t3.micro로  마찬가지로 돈 없는 백수라면 autoscaling은 끄는게 좋다. 스토리지 타입도 provisioned로 하면 돈 나가니 주의하자.  기존 ec2 인스턴스가 있어도 public access를 ..
락(Lock) 이란? 락 (Lock)- 물리적으로 특정 행(row) 또는 테이블(table)에 접근 제어를 거는 방법.- 다른 트랜잭션이 접근하지 못하게 막는 매커니즘.  비관적 락(Pessimistic Lock)SELECT FOR UPDATE ... 비관적 락은 데이터베이스 락 매커니즘에 의존하는 동시성 제어 방법으로, select for update 쿼리가 수행되는 것이라고 생각하시면 된다. 먼저 자원에 접근한 트랜잭션이 락을 획득하게 되고 다른 트랜잭션은 락을 획득하기 전까지 대기한다.  낙관적 락(Optimistic Lock)충돌이 일어나지 않을 것이라고 판단물리적인 락을 사용하지 않음.version 필드 사용장점락 대기 문제 회피데이터를 읽는 시점에 대응하지 않고 쓰는 시점에 대응하기 때문에 다른 트랜잭션에 영향을 ..
[스프링] JWT를 이용한 Spring Security 구현 (문제 & 해결) 스프링 시큐리티를 사용해서 인증, 인가를 구현하던 중 분명히 permitAll()로 회원가입과 로그인에 대한 접근을 허용했는데 필터를 거치게 되며 토큰 값을 검사하는 로직을 타게 되는 문제가 발생하였다. 다음은 내가 작성한 코드이다.  [WebSecurityConfig.java]package org.example.expert.security;import org.example.expert.config.JwtUtil;import org.springframework.boot.autoconfigure.security.servlet.PathRequest;import org.springframework.context.annotation.Bean;import org.springframework.context.anno..
[스프링] 트랜잭션 활용과 주의사항 ACIDAtomicity, 원자성트랜잭션 내 실행 작업들은 모두 하나의 작업처럼 성공하던가 실패해야 함. 만약 하나의 작업이 실패한다면 전체 rollback, 전체가 성공하면 commit 이 발생.Consistency, 일관성트랜잭션의 수행 전후의 데이터가 데이터베이스의 규칙을 따르는지트랜잭션 완료되면 데이터는 항상 db에서 정한 제약 조건 만족해야 함.Isolation, 격리성동시에 실행되는 트랜잭션들이 서로에게 어떤 영향을 미칠 수 있는지 격리 수준 정하는 것.트랜잭션과 동시성Durability, 지속성트랜잭션이 성공적으로 끝나면 그 결과가 항상 기록되어야 한다는 의미시스템에 문제가 발생하더라도 로그를 활용해 성공한 트랜잭션의 내용을 복구해야 함.WAL (Write Ahead Logging) 스프링에..
[AWS] Identity and Access Management 1. IAM 소개AWS Identity and Access Management (IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하면 AWS에서 사용자, 그룹 및 역할을 생성하고 관리하여 리소스에 대한 액세스를 안전하게 제어할 수 있습니다.IAM을 사용하면 다음과 같은 보안 기능을 수행할 수 있습니다.인증: IAM을 사용하여 사용자가 AWS 리소스에 액세스할 때 사용자 이름과 암호를 요청하여 인증할 수 있습니다.권한 부여: IAM을 사용하여 사용자, 그룹 또는 역할에 대한 권한을 지정할 수 있습니다. 권한은 AWS 리소스에서 수행할 수 있는 작업을 나타내며 IAM 정책을 사용하여 지정할 수 있습니다.권한 검증: IAM을 사용하여 사용자가 AWS 리소스에 대..
[AWS] AWS 시작하기 AWS 란?Amazon Web Services의 약어로, 아마존닷컴이 제공하는 클라우드 컴퓨팅 플랫폼입니다. AWS는 전 세계에 분산되어 있는 데이터 센터에서 고객에게 IT 인프라를 제공하며, 이를 사용하여 고객은 필요한 인프라를 빠르고 쉽게 설정하고 관리할 수 있습니다.AWS의 주요 서비스는 다음과 같습니다.컴퓨팅: EC2 (Elastic Compute Cloud), Elastic Beanstalk 등데이터베이스: RDS (Relational Database Service) 등스토리지: S3 (Simple Storage Service), EBS (Elastic Block Store)등네트워킹: VPC (Virtual Private Cloud), CloudFront, Route 53 등보안: IAM (I..