본문 바로가기
320x100

전체 글189

빠른 대응을 위한 실시간 모니터링/알림 툴 도입 이번에 EAI_AGAIN 에러를 겪으면서 느낀 점은, 트래픽이 많지 않더라도 얼마든지 서버가 내려갈 수 있고, 제대로 세팅을 해놓지 않으면 최악의 경우에는 이를 눈치채지 못할 수도 있다는 점이다. 애초에 서버가 내려가지 않도록 하는게 가장 중요하지만, 항상 정말 예상치 못한 곳에서 문제가 발생하기 때문에 서버가 내려갔을 경우를 항상 대비해야 한다. 이를 위해 존재하는것이 다양한 모니터링 도구들이다. 기존에 나는 pm2를 통해 백엔드 서버 상태를 관리했었다. 도커 내에서 pm2를 통해 서버를 돌리게 되면 pm2 웹사이트에서 모니터링 툴을 제공해준다. 처음에는 이것만 해놓고 상당히 만족하고 있었다. 실시간으로 서버의 상태를 확인할 수 있고, 서버가 내려가면 버튼 눌러서 다시 서버를 재시작할수 있기 때문이다... 2022. 1. 7.
좋은 객체지향의 다섯 가지 원칙, SOLID 개발자라면 흔히 SOLID 원칙에 대해 들어보았을 것이다. SOLID 원칙은 클린 코드의 저자로 유명한 로버트 마틴이 객체지향의 다섯 가지 원칙의 앞 글자를 따서 제시한 것이다. 이 원칙의 목적은, 결국 유지보수가 쉽고 확장하기에 용이한 코드를 작성하기 위함이다. 이 5가지 원칙을 모두 완벽하게 지키면서 코드를 작성할 수는 없지만 이러한 원칙들을 기준으로 코드를 작성하려는 노력이 필요하다. 각각 원칙의 정의와 위반 사례를 통해 이를 이해한다. SRP(Single Responsiblity Principle) 단일 책임 원칙 하나의 클래스는 하나의 책임만을 가져야 한다. 가장 먼저 나오는 SRP는 개인적으로 객체지향에서 가장 중요한 원칙이라고 생각한다. 만약 하나의 클래스가 여러가지의 책임을 가지고 있다면,.. 2022. 1. 6.
getaddrinfo EAI_AGAIN 에러 갑자기 서버에 접속할수가 없다. 모니터링 툴을 확인해 봤는데 백엔드 서버쪽은 정상적으로 돌아가고 있었다. 그래서 로그를 확인해 보았다. deploy-client-1 | ApolloError: request to https://nullpointerexception.ml/graphql failed, reason: getaddrinfo EAI_AGAIN nullpointerexception.ml deploy-client-1 | at new ApolloError (/app/frontend/node_modules/@apollo/client/errors/errors.cjs.js:34:28) deploy-client-1 | at /app/frontend/node_modules/@apollo/client/core/co.. 2022. 1. 5.
프로젝트 개선사항 및 앞으로의 과제들 부스트캠프를 마치고 이전에 내가 했던 프로젝트를 둘러보았다. 그중 맛집찾아 프로젝트를 다시 보았는데.. 1년전 그당시 정말 처음 개발했던 때였지만 진짜 색도 그렇고 너무 처참한 뷰와 백엔드를 가지고 있었기에 이를 무조건 개선해야겠다고 생각했다. 내가 개선해야겠다고 생각한 사항들을 정리해서 README에 먼저 적어놓았다. 뷰 개선 가장 먼저 해야할 것은 뷰를 개선하는 것이다. 기존에는 스프링에서 Mustache를 사용하여 서버사이드에서 렌더링하고 있었는데, SPA인만큼 프론트에서 React를 사용해보고 싶었다. 이에 더하여 이제부터는 프론트든 백엔드든 기본적으로 Typescript를 적용하려고 한다. 기존 색배열이 너무 별로여서 아예 색을 흰색 + 회색 + 검정색으로 통일시켜서 Figma를 통해 그려보았다.. 2022. 1. 4.