
기록하게 된 이유외부에 공개되어있는 API를 운영하면서 간단한 방법으로 업무를 매우 효율적으로 처리한 경험을 회고로 정리해본다.MSA 에서 어떻게 트레이싱이 이뤄지는지 조금 더 깊게 알게 된 좋은 계기 되었다. 이슈 사항외부에서 사용할 수 있게 공개한 API를 운영을 하다가 보면 다양한 문제를 겪게 된다.실제 로직 상 이슈가 있어서 수정이 필요한 경우도 있지만, 클라이언트 단에서 잘못 요청을 줬거나 API 스펙에 대한 이해도가 떨어지는 상황에서 문의를 하는 등 문제 자체는 복잡하지 않은 경우가 대부분이다. 하지만 운영자 입장에서는 상황 파악에 필요한 정보들은 문의 내용 내 파편화 되어있고, 이를 바탕으로 해당 로그를 찾기엔 생각보다 어렵다.- 문의 내용 내 이슈가 발생했던 정확한 시간이나 어떤 응답을 받..

기록하게 된 이유팀 서비스 중 OOM으로 장애를 겪은 회고를 적어본다.장애가 실제 발생했을 때는 사실 GC나 jvm memory에 대한 경험이 부족해서원인 분석을 위해 어디부터 확인해야 될지 몰랐고, 허겁지겁 찾느라 원인 후보들에 대한 이해가 완전하지 않았다.하지만 다시 내용을 처음부터 살펴보니, 에러가 발생한 원인은 정말 생각지도 못한 부분이라 개인적으로 흥미로웠고,공부할 만한 내용들이 많다고 생각들어서 늦게나마 회고 형태로 정리해본다. 장애 상황서비스 중인 서버 10대 중 대부분에서 DB Connection 에러와 함께 java oom 이 발생했다.1차 대응으로 전체 was를 재기동 해봤지만, 얼마 지나지 않아 서비스 중단은 계속됐다. 용의자 1. Slow QueryDB connection과 java..

기존 레거시를 msa 서버 어플리케이션으로 이관 후 중복처리가 발생한 에러에 대해 회고록을 남긴다.1. 내용 파악레거시 프로젝트를 이관하면서 에러 케이스에 대비해 다음과 같은 정책을 적용했다.- 모니터링 기간 동안 모든 request는 기존 레거시 프로젝트가 받는다.- 레거시 코드 안에서 이관한 API를 retrofit2client로 호출- 이관 API 에러 응답 시 기존 레거시 코드 실행 코드의 느낌은 대략 이렇다./* 레거시 프로젝트 컨트롤러 */...public Response legacyProcess(Request request) throws CustomException { try { Response result = getNewApiService().callNewAPI(reque..

기록하게 된 이유회사 프로젝트를 진행하면서 jwt를 처음 활용했는데 그 과정에서 배운 내용들을 정리해본다.요구사항정산과 관련된 서비스에 실명인증 프로세스가 필요하게 되어서 개발을 맡게 되었다.인증 완료까지 한 화면에서 두 단계를 걸쳐서 이뤄져야 했다. 1) 인증하기 버튼을 누르면 기입된 정보로 실명인증을 해주는 외부기관의 API로 제대로된 정보임을 확인 받고2) 인증 성공 후 아래 버튼이 활성화 되며 해당 버튼을 누르면 실명인증이 완료된 회원이라는 정보를 DB에 저장하는 API로 처리이렇게 한 화면에서 1) 2) 과정이 두 API로 분리되기 때문에 고민해야될 부분이 생겼다.2단계 실명인증 과정에서 해당 요청을 보낸 유저가 1단계를 정상적으로 거쳤다는 것을 어떻게 보장하느냐가 문제였다.추가로 혹시나 많이 ..
오랜만에 알고리즘 문제 풀던 중 문자열 내 특수문자 한 종류를 제거하기 위해 다음과 같은 코드를 실행했다. str = str.replaceAll(c, ""); //c = "+" java.util.regex.PatternSyntaxException: Dangling meta character 예외가 발생했다. 사실 replaceAll이라는 함수 내용을 정확히 보지 않고 이름만 보고 str 내의 모든 c 를 "" 으로 바꾸어주겠지 싶었다. 이름만 봐서는 그냥 replace(a, b)는 가장 첫 a 만 바꾸어주는거고 replaceAll(a, b)는 문자열 내의 모든 a를 바꾸어주는거 처럼 보였기 때문이다... (찾아보니 많이들 이렇게 착각한다고..) replace() 와 replaceAll()은 모두 (Str..
- Total
- Today
- Yesterday
- 2019 Kakao Blind
- zipkin
- 코테
- Java #JIT #JVM
- IOC
- Java #GC #가비지콜렉터 #Garbage Collector
- KAKAO 2021
- decorator
- jvm
- 신규 아이디 추천
- Spring
- behavior parameterization
- 모던 자바 인 액션
- 프로그래밍 모델
- 2021
- Kakao Blind
- PatternSyntaxException
- 디자인패턴
- WORA
- spring cloud sleuth
- 카카오 코테
- 스프링
- 카카오코테
- 카카오 인턴
- Java
- okhttp3
- 카카오
- 2020 KAKAO
- WORE
- nginx 내부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |