본문 바로가기
320x100
728x90

분류 전체보기151

내 코드 퀄리티를 올리는 개인적인 관점 연차가 찰 수록 회사에서 내가 작성했던 코드들의 수가 많아졌다. 그렇다 보니 그 코드를 인수인계받은 다른 팀원이 "이게 어떻게 동작하는 건가요?" 혹은 "이렇게 짠 이유가 뭔가요?"라는 질문을 가끔 듣는다. 그런데 실상 코드를 작성한 지 한 달만 지나도 내가 작성했던 코드의 의도를 까먹는 경우가 굉장히 많다. 이런 경우가 반복되다 보니 코드를 작성하면서 나만의 검증방법이 생겼다. 이 방법은 다수가 좋다고 해서 검증된 것이 아닌 그저 내가 코드를 작성할 때 나의 코드 퀄리티를 측정하는 방법입니다. (뇌피셜 주의...) 그냥 평범한 한 3년 차 개발자는 이런 생각하면서 코드 짜는구나... 하고 봐주시면 감사하겠습니다. 리팩토링은 코드를 작성하면서 한다 신입 때는 사실 코드를 다 작성하고 테스트 - 빌드 - .. 2023. 7. 21.
AWS]ECS Fargate X86에서 ARM으로 회사에서 EC2보다는 ECS를 더 사용하기로 했기 때문에 RI 준비를 하면서 기존에 EC2를 ECS로 전환하는 작업을 진행했다. 그중에서도 X86 아키텍처와 ARM 아키텍처 중, 선택지가 있었는데 아무래도 비용이나 성능면에서나 더 좋은 ARM 아키텍처 기반의 환경을 선택하기로 했다. Savings Plan을 적용했을 때의 요금표는 다음과 같다. * 기준 : 서울리전/리눅스/선결제 없음 두 요금 표는 소숫점으로 봐서 별 차이가 안 날 수 있지만 Fargate를 사용하는 vCPU와 RAM의 합산 요금을 기준으로 계산되기 때문에 실질적으로 큰 차이가 난다. ARM이 X86대비 시간당 RAM(GB)은 약 20%, CPU는 19.7% 둘 다 대략 약 20%가 저렴하다. 그렇다면 왜 더 싼걸까? 일단 몇 가지 이유.. 2023. 5. 9.
Spring boot에서 ControllerAdvice를 이용하여 Exception handling하기 코드를 작성하다 보면 코드에서 Exception(이하 오류)이 발생하는 일은 빈번하다. 제일 무서운 NullPointerException부터 NumberFormatException , ClassCastException 등등 많은 종류의 오류가 있다. 이런 오류들 중, Checked Exception으로 컴파일 이전에 코드 작성시에 try catch나 throw 등 에러를 핸들링하도록 강제하는 코드들이 있는 반면 SQL Exception, NullPointer, OutOfMemory 등의 오류들은 런타임에서 발생하기 때문에 개발 단계에서 확인하지 못하고 운영 단계나 사용자의 실 사용시에 발생하기 때문에 이는 곧 소프트웨어의 품질 문제로 이어진다. MVC 패턴을 채택하여 개발한다면 가장 첫 진입점이 되는 컨.. 2023. 3. 21.
MySQL의 Full-text index를 이용하여 검색 API 성능 개선하기 사내에서 테스트 커뮤니티 매체를 만들고 있는데, 테스트성으로 만든 매체다보니, 커뮤니티의 게시글을 검색하는 API에서 Like '%검색어%' 절로 간단하게 작성해 놨다. 그러다 보니 트래픽이 분당 500~700 사이었는데도 불구하고 RDS의 cpu가 항상 95~98%로 상당히 많은 부하가 있었다. 어찌 보면 당연한 결과다. like절은 인덱스를 타지 않고 기본적으로 풀스캔으로 동작을 하게 된다. 데이터는 약 16만 건의 row가 있었다. EXPLAIN SELECT * FROM contents c WHERE title LIKE '%검색어%'; explain으로 쿼리 전략을 살펴보면 모든 row를 스캔하고 그 대상은 약 13만 건의 데이터임을 알 수 있다. 사용자가 실제로 분당 30~40건의 검색 API를 .. 2023. 1. 16.
300x250
320x100