인증 요청이 증가함에 따라 Gateway → Auth 서버 간 통신에서 발생하는 블로킹 처리는 전체 서비스의 응답 속도 저하로 이어졌고, 이는 사용자 경험에도 영향을 미치기 시작했다. 이러한 문제를 해결하고자 인증 서버를 완전한 WebFlux 기반 비동기 구조로 리팩토
상황 운영 중인 서비스 픽플에 어느 날부터 지속적인 비정상 요청이 발생하기 시작했다. 로그를 확인해보니 아래와 같은 에러가 반복적으로 찍히고 있었다 > 반복적으로 calluserfunc_array, md5, vars[] 등이 포함된 요청이 수천 건씩 찍히는 상황.
앞서 스마일게이트 부트캠프를 진행하며 MSA 환경에서 Passport 기반 인증 시스템을 설계하며, Spring Cloud Gateway와 WebFlux를 중심으로 비동기 구조를 구현했다. 하지만 서비스 규모가 커지고 인증 요청이 많아지면서, 기존 Spring MVC
MSA 환경에서 각 마이크로서비스는 독립적으로 동작하지만, 인증과 인가는 공통된 요구 사항이었고, 인증서버를 담당한 나는 “어떻게 하면 효율적으로 인증/인가를 진행할 수 있을까?” "다양한 프레임워크에서 인증/인가는 어떻게 진행할 수 있을까?하는 고민이 생겼다!
썸네일 문제 상황 > 픽플에서는 게스트가 원하는 클래스를 신청 후 참가비를 입금해야 지식 공유자인 스픽커에게 명단이 보일 수 있게 되어있다. 이때 운영진이 입금을 확인하고 신청 상태값을 승인대기로 변경해주는 api가 필요해서 구현하게 되었다. 우리는 클래스를 신청
현재 사이드 프로젝트로 진행중인 픽플이 베타서비스 중에 있는데 동작을 확인하기 위해 jpa:show_sql: true로 설정이 되어있다! 그러던 와중 서버에 이상이 생길 때 마다 로그를 확인하는데 Hibernte가 생성한 sql 문이 너무 많이 찍혀있어서 확인이 어려
pytest는 Python의 테스팅 프레임워크 중 하나로, 단위 테스트(unit tests)부터 기능 테스트(functional tests)까지 다양한 종류의 테스트를 쉽게 작성할 수 있습니다.간결하고 강력한 테스트 코드를 작성할 수 있도록 다양한 기능을 제공하며, 플
TDD를 위한 unit test 중 mock를 알아보자Mock은 실제 객체 대신 가짜 객체를 사용해 테스트할 수 있는 도구.네트워크 요청, DB 연결 등 외부 종속성을 빠르게 처리할 수 있음.문제: sleep, HTTP 요청 같은 작업이 실제 실행 시 시간이 오래 걸림
인턴활동을 하며 실 업무에 들어가기 위해 기존 코드를 학습하는 과정 중에 있다. 기존 코드를 학습하기 위해 기존 코드에 사용되어있는 디자인 패턴을 학습하려고 한다. 오늘은 옵저버 패턴이 사용된 부분을 이해하기 위해 Oberver Pattern을 학습해보았다.Oberve
인턴을 진행하며 장비 시뮬레이션 프로그램에 MQTT 클라이언트와 브로커를 구축해야하는 상황이 생겨 MQTT에 대해 공부를 진행하였다경량 메시지 통신 프로토콜, 주로 IoT와 저전력 장치에서 사용발행/구독(Pub/Sub) 모델 기반으로 브로커가 메시지를 중계비동기 통신으
코드잇에서 수강권을 제공 받아 작성한 글입니다. 활동하고 있는 대학생 연합 IT 벤처 창업 동아리 SOPT에서 좋은 기회로 코드잇과 협업하게 되어 코드잇의 수강권을 제공받아 다양한 강의를 들을 수 있게 되었다! Git을 비롯해 많은 강의가 있었고 그 중 다양한 개발 분야를 배워보고자 JavaScript관련 강의들을 수강하고 수료까지 할 수 있었다 !...
<span style="background-color: - 특징 \- 가장 보편적 \- Process to Process \- 가상 연결 \- non real time 서비스에 적합 \- 전이중 통신(버퍼)-피기배
finalizer최상위 Object 클래스에 포함된 메서드이기 때문에 finalize 메서드 재정의(Overriding) 가능finalize메서드를 재정의하면 해당 객체가 Garbege Collection 대상이 되었을 때 finalize메서드가 호출된다. 단, 즉시
자바에서는 가비지 컬렉터가 다쓴 객체를 알아서 회수해간다 하지만 그렇다고해서 메모리 관리에 신경쓰지 않으면 안된다. 메모리 누수가 발생하는 프로그램을 오래 실행하다보면 점차 가비지 컬렉션 활동과 메모리 사용량이 늘어나 결국 성능이 저하되거나 메모리초과(OufOfMemo
똑같은 기능의 객체를 매번 생성하기보단 객체 하나를 재사용하는 편이 나을 때가 많다.1번의 경우 실행될 때 마다 String 인스턴스를 새로 만들고 2번은 하나의 인스턴스를 사용한다. 1번처럼 new 키워드를 이용해 문자열을 생성하는 것은 무의미하며 성능에 악영향을 끼
사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다.위와 같은 SpellChecker 클래스는 Dictionary를 사용하고 이를 의존하는 리소스 또는 의존성이라고 부른다. 이렇게 정적 유틸리티를 잘못 사용하거나 싱글턴을
그런 나에게 기회가 되어 SOPT에서 GraphQL 스터디가 열려서 참여하게 되었다! 이름도 처음 들어봤지만 차근차근 알아보도록 하자! 페이스북에서 REST API의 한계를 극복하기 위해 만든 API 를 위한 쿼리 언어라고 할 수 있다. REST API의 한계를 극복하
정적 메서드와 정적 필드는 OOP에서 미움 받는 형식이지만 아래와 같은 상황에선 쓰임새가 존재한다.기본 타입 값이나 배열 관련 메서드들을 모아놓을 때특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓고 싶을 때final 클래스와 관련한 메서드를 모아놓을
싱글턴은 인스턴스를 오직 하나만 생성할 수 있는 클래스다. 이런 싱글턴 클래스는 호출 시 매번 인스턴스를 생성하지 않고 미리 생성해둔 인스턴스를 반환하기 때문에 DB의 Connection Pool에서도 사용하여 관리하는 것이 효율적이다책에서는 이런 싱글톤을 만드는 방법
배경 선택적 매개변수가 많을 때 적절하게 대응하기 어렵다 선행적 해결 방법점층적 생성자 패턴: 필수 매개변수만 받는 생성자 ..>..>필수 매개변수 + 선택 매개변수 전체를 받는 생성자단점설정을 원하지 않는 매개변수까지 포함해야하고 어쩔 수 없이 그런 매개변수