전체 글
-
GitLab과 CI/CDCloud 2025. 1. 21. 20:56
GitLab의 장점 - 오픈소스- 자체 Git 저장소(Jenkins는 Git저장소를 제공하고 있지 않기 때문에 GitHub나 GitLab 같은 Git저장소를 써야 함) - 통합된 환경- 안전성과 안정성..?(기업에서 많이 사용하고 있기 때문에) - 자체 호스팅 가능(기업에서 많이 사용하고 있는 이유)데이터 센터의 서버에 직접 설치해서 서비스 가능. 이렇게 되면 기업들의 보안 정책들(소스 코드를 반드시 제어할 수 있는 공간에 둬야 한다 등)을 달성할 수 있음.또한, SaaS형으로 인터넷 서비스 형태로 설치 없이 사용 가능. - 이슈 관리 툴- 다양한 플러그인 제공
-
-
자료구조 - Array & LinkedListCS 2024. 10. 29. 18:57
Array & LinkedList 가장 큰 차이점은메모리에 저장되는 방식과 operation의 연산 속도 고정된 저장 공간에 연속적이고 순차적으로 저장. compile 시점에 메모리 크기가 결정되며 stack memory영역에 할당. 비연속적으로 데이터 값과 다음 address를 저장. runtime 시점에 동적으로 메모리 크기가 결정되며 heap memory영역에 할당. Array & Dynamic Arrayresize하여 fixed-size를 보완 Dynamic Array & LinkedList
-
DB Lock연습장 2024. 10. 17. 13:21
1. DB Lock1.1 개념 데이터베이스에서 여러 트랜잭션이 동시에 같은 데이터에 접근할 때, 데이터의 무결성(일관성)을 보장하기 위해 사용되는 메커니즘. 한 트랜잭션이 특정 데이터에 대해 작업을 하고 있을 때, 다른 트랜잭션이 그 데이터에 접근하지 못하도록 잠그는 것. 데이터의 일관성 유지 및 동시에 발생할 수 있는 충돌을 방지 1.2 필요성 DB 락을 통해 데이터에 대한 접근을 제어하면, 다음과 같은 상황에서 발생할 수 있는 데이터 무결성 문제를 예방할 수 있음. - Dirty Read: 한 트랜잭션이 데이터를 수정 중일 때 다른 트랜잭션이 그 데이터를 읽는 상황- Non-repeatable Read: 한 트랜잭션이 데이터를 읽은 후, 다른 트랜잭션이 그 데이터를 수정하고 커밋하여 첫 번째..
-
메일 발송 원리회고 2024. 10. 12. 00:46
시작하며더보기 플래시 세일(Flash Sale)을 주제로 프로젝트를 진행하고 있다. msa로 진행되고 있는데 그 중 알람 서비스도 맡게 되어, 플래시 세일 1시간 전 사용자가 알림 설정한 상품에 대해 메일을 발송하는 기능을 구현해야 했다. 먼저 메일이 어떤 원리로 전송이 되는지 대략적으로 정리하고, 어떤식으로 구현할 건지 간략하게 얘기해보겠다.1. 이메일 시스템의 주요 구성 요소2. 메일 발송을 위한 프로토콜3. 이메일 발송의 단계별 과정4. SMTP의 보안 강화 기술 1. 이메일 시스템의 주요 구성 요소 이메일 발송 과정에서 핵심적으로 사용되는 구성 요소는 크게 3가지로 나뉜다. 이메일 클라이언트(MUA), 메일 서버(MTA), 메일 수신 서버(POP3, IMAP)이다.이메일 클라이언트 (Mai..
-
토큰 유효성 검사 관련 리팩토링회고 2024. 10. 7. 18:18
시작하며더보기 이번 프로젝트에도 인증, 인가 부분을 포함한 부분을 맡게 되었다. 이제는 개념이 많이 잡힌 것 같고, 기존 프로젝트 때 잘못했던 부분들을 파악할 수 있게 되고 있는 것 같다. 토큰 유효성 검사 시 예외 처리 부분을 잘못하고 있었다는 것을 발견했는데 그 부분에 대해서 얘기해 보겠다.1. 문제상황1. 문제상황 토큰에 대한 유효성 검사를 할 때 실행되는 JwtUtil 내 메서드이다. 어떤 예외가 발생하는 지 알기 위해서 주로 발생하는 예외에 대해서 try~catch문으로 감싸서 처리를 했다. 특히, 만료된 토큰인지 검증하는 메서드는 토큰 재발급시 단독으로 사용될 것 같아 분리해서 처리를 했다. 아래 로그는 만료된 토큰으로 api요청을 보냈을 때 발생하는 에러인데, 잘못 생각했던 부분..
-
AI 검증 비즈니스 프로젝트 - 로그인 관련 트러블 슈팅회고 2024. 8. 28. 23:16
시작하며더보기 Spring Security와 JWT를 사용하여 회원가입, 로그인을 구현하고자 했다. 회원가입을 완료하고, 로그인을 했더니 403 FORBIDDEN에러가 발생했다. 확인 결과 UsernamePasswordAuthenticationFilter를 상속해서 커스텀한 Filter를 호출하지 못하고 있었다. 왜 안되는지 몇 시간 동안 씨름을 하다 결국 내부 코드를 까서 원인을 찾았다. 어떤 문제가 있었고 어떻게 찾았는지, 그리고 어떻게 해결했는지 정리해 보겠다. 1. 전체적인 흐름 정리 먼저 jwt를 사용할 때의 전체적인 흐름에 대해서 먼저 정리해 보겠다. 1) SpringSecurity의존성을 추가하게 되면 기존 톰켓의 Servlet 컨테이너의 필터 체인에 DelegatingFilter..