Vampire Pizza Ninja 구성하기
·
메모
홈서버를 운영하면서 아쉬운 점이 몇 가지 있는데 바로 카페나, 스터디와 같이 집 외부에서 접근하기 어렵다는 문제가 있었다. 그래서 VPN을 구성해 보기로 했다. 혼자 사용하려는 목적이기 때문에 설치가 쉽고 wireguard를 사용하기 위해서 PIVPN을 선택했다. 준비접속할 네트워크에 연결된 PC 설치사용할 PIVPN은 굉장히 설치가 간단한 편인데, 아래 명령어 한 줄이면 설치가 된다.curl -L https://install.pivpn.io | bash설치 과정에서 몇가지 선택지가 있는데, 크게 어려운 것은 없고 설명에 따라서 설치하면 된다. 공유기 설정VPN 설치를 완료하면 설치 중간에 포트 정보를 공유기에서 포트포워드 설정을 해주면 된다. WireguardVPN 프로필 발급pivpn -aWiregu..
[8월 디버깅] 가짜 Nest.js 개발자
·
메모
최근에 담당 중인 서비스 내에 GlitchTip을 연결하는 작업을 진행했다. 하지만 기본적으로 제공하는 Nest.js 지원 모듈은 현재 실험적이고, 모니터링에 필요한 정보가 많이 부족했다. 그래서 직접 예외 발생 시 처리할 Interceptor를 구성했는데, 어느 날 UnauthoziedException으로 처리한 예외가 모니터링에 지속적으로 나타나게 되었다. 원래 구현 상태에 따르면 4xx 에러는 모니터링하지 않기 때문에 원인을 분석할 필요가 있었다. 원인은 Nest.js HTTP exception 생성자에 Error 객체를 주게 된다면, Fastify는 body에 담을 내용이 Error 객체인 경우 Nest.js의 Interceptor를 태워서 결국 하나의 예외에 대해서 두 번 Interceptor가..
[8월의 디버깅] 성능 테스트
·
메모
최근 성능적으로 병목이 많이 생기는 부분에 대해서 원인과 해결 방안을 찾기 위해서 성능 테스트를 수행했다. 성능 테스트는 목록 조회 API로 MSA 구조로 된 서버 환경 특성 때문에 꽤 많은 I/O 작업이 동반되는 작업이었는데 헷갈렸던 부분이 중간에 데이터 조합 과정에서 Event loop delay가 발생하는 것이 아닌지 의심이 되는 상황이었다. 결론적으로 말하면 I/O 작업이 문제였고, Event loop delay가 의심되던 곳은 트래픽이 몰렸을 때 기준으로 I/O 통신 구간에 비해서 1/1000ms도 안 됐다. 이 글에선 그중 흥미로웠던 부분으로 Node.js 버전을 18.19.0에서 21.7.2로 수정하는 것만으로 400ms에서 60ms로 Event loop delay가 약 7배가 개선되었다. ..
[8월의 디버깅] 테스트 코드에서의 MikroORM 영속성
·
메모
현재 재직 중인 회사의 백엔드 코드 구조는 도메인 와 ORM 엔티티가 분리된 구조다. 각 레이어 간의 이동은 맵퍼를 통해서 변환해 이동하게 되는데, 이런 구조의 특징 상 MikroORM의 영속성 콘텍스트를 사용하기 어렵다. 그래서 각 영속성 계층에서는 영속성 콘텍스트에 변경된 내용이 있다면 바로 데이터베이스와 동기화하도록 구성된다. 그렇지만 오늘 문제가 된 테스트 코드는 데이터를 삭제 후 제대로 삭제가 됐는지 검증하는 테스트 코드로서 큰 고민 없이 코드를 작성했다.it('The class should be deleted', async () => { await courseRepository.delete(course); const deletedCourse = await courseRepository.f..
NGINX reverse proxy
·
메모
최근에 사이드 프로젝트에서 사용할 Redis, Database를 구축하는 과정에서 나뿐만 아니라 팀들도 접속이 가능해야 하는 상황이 생겼다. 이전까진 대부분 이런 인프라 도구는 내가 가진 서버 위에 올려두고 내부 네트워크를 이용해 접속하다 보니 다른 팀원들이 접근하기가 어려웠다. 하지만 집에서 운영하고 있는 서버라 외부에 너무 많이 공개하게 되면 내 개인생활이 위험할 수 있어 최대한 노출을 안하려고 했는데 그러다 보니 나만 접근을 하다 보니 팀원들이 개발을 하며 이런저런 확인할 부분이나 테스트를 하기 어려워 문제가 많았는데, 이참에 nginx를 통해서 reverse proxy를 설정했다.STREAM reverse proxy이전에도 웹에 대해선 리버스 프록시를 통해 운영하고 있어 큰 문제없이 추가할 수 있..
틴타임즈 : 뉴스 10초 요약 회고
·
메모
보호되어 있는 글입니다.