본문 바로가기
반응형

전체글586

엔지니어의 세심함 제일 싫어하는 개발자의 유형 중 하나가, 개발자가 일을 잘하기 위해서 하나부터 열까지 기획자가 다 챙겨야 한다고 생각하는 분들이다. "A ~ Z까지 엣지케이스, 예외 상황 하나도 빠짐없이 다 기획서에 넣어주세요" "아 그건 기획서에 없었으니깐 당연히 안했죠" "그거 자주 잊어먹으니깐 A, B, C에 문서화 해주세요" 등등 엄청 많다. 이걸 병적으로 싫어한다. 엔지니어외 다른 직무는 엔지니어의 서포트 조직이 아니다. 그래서 팀에 합류하고나서 공들였던 작업중 하나가 엔지니어들의 문서화/커뮤니케이션 문화 개선이였다. 초기 스타트업의 엔지니어분들은 커뮤니케이션/문서화의 세심함이 정말 부족하다. 엔지니어들의 리소스가 절대적으로 부족한 시기이다보니, 최대한 엔지니어분들의 리소스를 아끼기 위해 엔지니어가 아닌 분들이.. 2022. 4. 23.
CloudFront 모니터링 하기 최근에 AWS의 서울/도쿄 리전에서 CloudFront 장애가 발생했다. (착한 트위터의 세계에서는 실시간으로 공유가 된다) EC2, RDS, ElasticCache에 비해 CloudFront는 모니터링을 잘 안하게 되는데, 장애가 발생하면 서비스 전체에 직격타가 된다. 대부분의 정적 파일 (이미지 등)이 CloudFront를 통한 CDN으로 전달이 되기 때문이다. 그래서 CloudFront가 평소보다 응답이 늦거나 에러 발생율이 높을때를 알 수 있게 모니터링할 필요가 있다. 여기서는 바로 적용할 수 있는 CloudWatch로 모니터링 하는 방법을 소개하지만, 만약 Datadog 같이 전문적인 APM 도구를 사용하고 있다면 APM을 통해 CloudFront를 모니터링하고 알람을 거는 것이 장기적인 관점에.. 2022. 4. 17.
SonarLint와 SonarCloud 연동하기 (WebStorm Plugin) 지난 시간에 프로젝트와 SonarCloud 연동을 했습니다. 이번 시간에는 프로젝트와 연결된 SonarCloud를 개발환경인 WebStorm의 SonarLint 플러그인과 연동해서 IDE로 개발 중에도 SonarCloud 검증이 되도록 설정해보겠습니다. 1. 설정 먼저 SonarLint 플러그인을 설치합니다. 설치된 SonarLint 플러그인의 설정을 열어봅니다. 아래와 같이 Action 검색 (CMD + Shift + A) 을 통해 검색합니다. 다음과 같이 커넥션 연결 화면이 나온다면 Configure the connection 을 선택합니다. SonarQube / SonarCloud connections의 + 버튼을 클리해서 새로운 커넥션을 추가합니다. 여기서는 SonarCloud를 쓰고 있으니 So.. 2022. 4. 14.
expect에서 false와 falsy 구분하기 Jest로 테스트 코드를 작성하다보면 습관적으로 IDE의 자동완성으로 toBeFalsy 와 toBeTruthy 를 사용하곤 했다. 저 둘이 아닌 toBe(false) 와 toBe(true) 는 한 번의 자동완성으로 안되기 때문에 굳이 사용하진 않았다. 그러다 팀 분의 의견을 받고 더이상 toBeFalsy() 는 사용하진 않고 있다. 물론 이에 맞는 쓰임새가 있겠지만, 모든 결과를 강타입으로 처리하는걸 선호하는 입장에서는 toBeFalsy() 는 선호하기가 어렵다. 다음과 같은 이유 때문이다. toBeFalsy() 는 JS에서 false로 판단되는 모든 값들을 기준으로 한다 내가 의도한것은 boolean 타입의 false 를 원했지만, 수행 결과가 0, undefined, null, '' 이면 toBeFa.. 2022. 4. 13.
단언문 (expect/assert) 안에서 비교하지 않기 간혹 코드를 보면 expect 에서 비교를 하는 코드를 보곤 한다. 이를테면 다음과 같은 경우이다. it('getCount의 결과는 5보다 크다', () => { const result = getCount(); expect(result > 5).toBe(true); }); 당장 봐서는 문제가 없어보인다. 오히려 비교값이 더 큰지 검증하는 jest 함수를 별도로 찾아보지 않아도 된다는 장점도 있어보인다. 비슷한 예제로 다음과 같은 코드도 종종 보게 된다. it('getCount의 값은 10과 동일하다', () => { const count = getCount(); expect(count === 10).toBe(true); }); 하지만 이 테스트 코드들은 크게 2개의 단점을 갖고 있다. (정확히는 잘못된 .. 2022. 4. 10.
SonarCloud를 통한 Node.js & Jest 프로젝트 정적 분석하기 일반적으로 프로젝트의 코드 퀄리티를 올리기 위해서는 단위 테스트를 비롯해 여러가지 장치를 도입한다. 이때 가장 가성비가 좋은 작업이 정적 코드 분석을 도입하는 것이다. 정적 코드 분석은 코드내에서 발견할 수 있는 코드 스멜, 잠재적인 결함, 컨벤션 체크, 보안 취약점 등을 코드 레벨에서 분석해서 레포팅 해준다. 이런 정적 코드 분석 도구에는 여러가지가 있지만, 가장 많은 사용자들이 사용하는 도구는 SonarQube(소나큐브) 이다. 기존에는 설치형외에는 지원하지 않았지만, 최근에는 SaaS 형태로 SonarCloud 가 출시되었다. Github에 공개된 저장소에 한해서는 소나 클라우드의 전체 기능을 무료로 사용할 수 있다. 그래서 개인 프로젝트는 SonarCloud로 편하게 연동하고, 무료로 정적 코드 .. 2022. 4. 5.

728x90
반응형