개발 이슈 9

Auto increment max 때문에 주말에 6시간 일했다 - 2

해결책은 간단했다. D 테이블의 id가 max에 도달해서 C 모듈이 Queue Table에 있는 데이터를 읽어서 D 테이블에 업데이트를 못하는 것이니깐1. C 모듈 잠깐 끄고2. pk가 unsigned int 인 것을 unsigned bigint로 바뀐 E테이블을 새로 만들고3. D테이블을 E테이블로 카피하고4. 그다음에 D테이블과 E테이블의 이름을 바꿔치기하면 해결되는 것이었다.  약간 걱정이 되는 부분은 D테이블에 데이터가 얼마나 쌓였고 D테이블에 있는 데이터를 E테이블에 카피하는 데 걸리는 시간을 가늠할 수 없다는 것이었다. (최대 42억개니깐..) 그래도 git의 maintainer 권한이 있었기 때문에 작업 자체는 어떻게든 다 할 수 있었다.production DB에 접근할 수 없어 쿼리를 직접..

개발 이슈 2024.05.25

Auto increment max 때문에 주말에 6시간 일했다 - 1

사건은 주말 저녁 8시 30분에 발생했다. 내가 입사때부터 쭉 담당하고 있는 서비스에 이상이 발생했다는 연락을 협력사로부터 받았다. 서비스 자체가 동작하지 않는 것은 아니었으나, 정보를 표기하는 부분에 있어 특정 데이터가 갱신되고 있지 않다는 것이었다. 서비스의 일부 모듈에 문제고 특정 정보의 갱신이 되지 않는 다는 것은 협력사로부터 연락받기 3일전부터 인지를 하고 있었고 서비스의 아주 사소한 부분이라 바로 해결하지 않았다.  담당하고 있는 서비스에 버그가 발생하면 슬랙으로 알람을 받도록 코드를 짜뒀었고, 에러 메세지는 Failed to read auto-increment value from storage engine 였다. 대충 구글링 하고 에러가 발생한 모듈을 보니 딱봐도 auto increment ..

개발 이슈 2024.05.19

sharp: Cannot find module '../build/Release/sharp-linuxmusl-x64.node'

mac (intel)에서는 멀쩡히 설치되고 돌아가던 sharp 라이브러리가 dev 서버에 배포하니 패키지 설치가 되지 않았다. 대략 에러로그는 다음과 같았다. Something went wrong installing the "sharp" module Cannot find module '../build/Release/sharp-linuxmusl-x64.node' ... Possible solutions: - Install with verbose logging and look for errors: "npm install --ignore-scripts=false --foreground-scripts --verbose sharp" - Install for the current linuxmusl-x64 runti..

개발 이슈 2023.06.26

AWS EKS 클러스터에 접속해서 특정 작업 또는 정보를 확인하기

글을 작성하게 된 계기 회사에서 개발 도중에 stage 환경에 띄워져있는 특정 pod이 5분간격으로 터졌다. dev에서는 잘 되는데 stage에서만 발생하는 문제였고, 문제가 발생하는 RPC도 로컬에서 연결해서 확인해봤을때는 정상적으로 동작했다. 인프라쪽에서 최근에 보안관련 설정을 했었는데 그때 뭔가 잘못 건드려서 발생하는 문제같았지만 확실하게 하고싶어서 옆자리 사수님께도 얘기해 봤다. 이때 사수가 "eks 에 접속해서 확인해봐야 정확히 알 것 같아요!" 라고 하셨지만 나는 어떻게 해야하는지 구체적으로 몰랐다. 결국 실장님이 인프라담당자에게 관련 이슈에 대해서 전달하고, 내게 eks 접속과 관련해서 커맨드를 알려주고 설명을 쭉 해주셨다. 쿠버네티스에 대해서 강의를 들은 적은 있지만 대충 억지로 공부했어서..

개발 이슈 2023.05.13

The project you were looking for could not be found or you don't have permission to view it. 에러

remote: remote: ======================================================================== remote: remote: The project you were looking for could not be found or you don't have permission to view it. remote: remote: ======================================================================== remote: fatal: Could not read from remote repository. Please make sure you have the correct access rights and t..

개발 이슈 2023.05.08

API를 만들때는 속도도 중요하지만 Response size도 생각하자

회의에서 앞으로 개발할 서비스들은 MSA 방식으로 구축하기로 결정했다. 그리고 추가되는 서비스 중 하나를 내가 처음부터 맡아서 작업하게 되었다. 별로 어려운 작업이 아니었고, 인프라 구축은 나의 사수2가 해준 덕에 필요한 기능들은 금방 구현했다. (물론 코드가 깔끔하게 되어있지는 않다) 내가 만든 A 서비스의 API가 Production 까지 배포되었고 다른 서비스들에서 API를 호출하여 사용하게 되었다. 처음 B 서비스에서만 API를 호출해서 사용할 때는 큰 문제가 없었는데 C 서비스도 A 서비스의 API를 호출해서 사용하기 시작하면서 갑자기 API 호출이 터지기 시작했다. 이때 멘붕이 왔다. (Gateway time-out이 발생했고 api를 호출했을때 pending 상태로 멈춰 있었다.) 분명 DB..

개발 이슈 2023.04.11

모르는거 모아두는 곳

회사에 입사한 직후에 공부를 안해서 그런지 모르는게 많다. (역시 신입때 공부를 많이 해둬야 이후에 고생을 덜한다 😅) 그래서 용어별로 모아두고 있다. - EC2 - k8s - eks - Docker - ssh - 의존성 주입 - cdn, cloudflare, dns, route53 - load balancer (alb, clb) - cloudwatch (log, loki) - efs, ebs? - CORS [o] 2023.02.19 - [Network] - CORS (Cross-Origin Resource Sharing) CORS (Cross-Origin Resource Sharing) CORS (Cross-Origin Resource Sharing) = 교차 출처 리소스 공유 (다른 출처 리소스 공유..

개발 이슈 2023.02.12

[TypeORM] transaction 이 깨질 때 해결방법

회사에서 개발을 하던 도중 한 테이블의 특정 컬럼이 잘못되었다는 것을 발견했었다. 해당 컬럼이 잘못 들어간 것을 확인하고 나서 바로잡기 위해서 migration 스크립트를 만들어서 별도의 프로세스로 돌렸는데 DEAD_LOCK이 발생하면서 트랜잭션이 깨지는 문제가 발생하였다. 프로세스 A : 초단위로 a, b, c 테이블에 insert or update 하는 역할 + temp table 을 create 하고 데이터를 insert 했다가 d 테이블에 insert 하는 역할 프로세스 B : a 테이블을 처음부터 N개씩 읽고 필요한 데이터를 b에 insert or update 하는 역할 -> b 테이블에서 잘못 들어간 특정 컬럼을 바로잡기 위해서 프로세스 B를 돌리다가 DEAD_LOCK이 발생하면서 프로세스 A..

개발 이슈 2023.01.12