[북스터디] 단위 테스트의 기술 - 첫 번째 단위 테스트
·
DEV/JS, TS
들어가며오늘은 단위 테스트의 기술 북스터디 2장 - 첫 번째 단위 테스트 부분 정리 내용을 공유하겠습니다.2장은 단위 테스트 코드의 적용되는 다양한 패턴이나 jest를 사용한 단위테스트의 기초적인 내용이 주를 이루는 장입니다.Summary단위 테스트 프레임워크를 사용해 테스트 코드의 일관된 형식을 유지하고, 쉽게 테스트를 반복할 수 있으며 신뢰성과 시간 절약, 공동의 이해를 가져올 수 있다.테스트 코드는 AAA 패턴 - 준비(Arrange), 실행(Act), 검증(Assert)로 작성한다.테스트 코드의 이름은 USE(Unit, Senario, Expectation) 전략을 따라 짓는다.jest 프레임워크에서는 describe로 구역을 나누고 test(it) 함수에 테스트 코드를 작성할 수 있다.befor..
[북스터디] 단위 테스트의 기술 - 단위테스트의 기초
·
DEV/JS, TS
들어가며작년 말 회사에서 열린 인프랩 CTO님의 테스트 하기 좋은 코드 작성하기 커밋을 듣고 팀원들과 단위 테스트에 관한 북스터디를 시작했었습니다.해당 세미나 후반부에 몇가지 책을 추천해주셨는데 올해 그 중 하나인 '단위 테스트의 기술' 이란 책으로 스터디를 진행했습니다.스터디는 끝났는데 정리했던 내용을 다른 곳에 올렸어서 여기에도 정리하며 다시 복기 해보려합니다. 책 내용용이 어렵지도 않고 JS 기반으로 작성되어 있어서 Node.js 개발자인 제가 업무에 바로 적용할만한 내용이 많아서 흥미롭게 읽었습니다.실제로 이렇게 스터디를 같이 한 팀원들과 코드리뷰에서 이전엔 그냥 저냥 넘어갔던 테스트 코드에 대한 논의도 책 내용을 기반으로 더 많이 할 수 있었습니다 ㅎㅎ또한 의무적으로 이전에 작성된 테스트 코드와..
3분만에 알아보는 Redis를 사용한 분산 락
·
DEV/DB
들어가며안녕하세요 잡채입니다.연휴를 맞아 예전에 회사에서 동시성 처리 업무를 수행하며 공부했던 Redis를 사용한 분산 락에 대해 정리해둔 내용이 생각나 다시 읽어보며 업로드 합니다.Background이 글을 읽기 전 알아야할 내용Lock특정 임계 구역에 접근할 때 상호 배제를 보장하는 방법Distributed lock기본적인 lock의 개념을 가지면서 여러대의 서버가 하나의 임계 구역에 접근할 때 상호 배제를 보장하는 방법분산 락은 아래 3가지를 반드시 보장해야한다.Safety property상호 배제: 특정 순간에 단 1개의 클라이언트만 Lock을 보유해야한다.Liveness property A데드락 방지: Lock을 반납하지 못하고 죽은 클라이언트가 있어도 다른 클라이언트가 영영 Lock을 획득하지..
MongoDB Atlas Search 찍먹하기
·
DEV/DB
들어가며이전에 회사 업무에 MongoDB Atlas Search를 도입하며 찍먹용 정리글을 작성했던게 있어 블로그에 업로드 하려한다.ES 같은 검색엔진을 구성하는 것도 방법이었지만, DB를 MongoDB를 사용하고 있었고, 적은 비용으로 DB와 검색엔진을 모두 사용할 수 있어서 편하게 개발했던 기억이 난다.물론 지금도 서비스에서 잘 사용중이다 🚀Atlas Search 개요MongoDB의 Atlas Search를 사용하면 Atlas 클러스터의 데이터에 대한 세분화된 텍스트 인덱스 및 쿼리를 수행할 수 있다.데이터베이스와 함께 추가 관리나 별도의 검색 시스템 없이 애플리케이션에 대한 고급 검색 기능을 사용할 수 있다.Atlas Search는 여러 종류의 텍스트 분석기와 $search, $searchMeta..
MongoDB Associate Developer Node.js 자격증 합격 후기
·
DEV/잡다한 개발 일지
들어가며안녕하세요. 오랜만에 블로그에 글을 올립니다.매번 올려야겠다 다짐하지만 퇴근하면 잘 안올리게 되네요. :sad:이번에 사내 스터디로 MongoDB 자격증 스터디를 진행하며 최종적으로 MongoDB Associate Developer exam 에 합격하여 후기를 올려보려 합니다.준비하면서 찾아봤을 때 MongoDB 자격증은 국내 후기가 많지 않더라구요.시험 정보MongoDB 자격증도 종류가 여러가지 있습니다. 저는 MongoDB를 사용해 개발하는 개발자이니 Associate Developer Exam을 준비했습니다.이밖에도 사진처럼 Data Modeler나 DBA 자격증도 있으니 본인의 목적에 따라 신청하면 됩니다.제가 본 시험은 아래와 같았습니다.시험 방법 : Online (examity 활용)..
javascript bundler 넌 뭐니?
·
DEV/JS, TS
들어가며 안녕하세요. 잡채입니다. 요새 사내 스터디로 javascript bundler 를 직접 구현해보는 경험을 하면서 그동안 아무 생각 없이 사용했던 번들러에 대해 알아볼 기회가 생겼습니다. 그냥 javascript 코드 하나로 압축해주는거 아냐? 라고 생각했는데 들여다보니 많은 일을 하고 있는 친구였습니다. 이번에는 bundler 에 대해 알게 된 내용들을 간단하게 정리해보겠습니다. 번들러가 뭔데? 모듈 번들러를 떠올리면 많은 분들이 webpack, rollup 등 을 떠올릴 것 같습니다. 저도 webpack 이 먼저 떠올랐거든요. 모듈 번들러는 한 문장으로 설명하자면 javascript 모듈들을 브라우저에서 실행할 수 있도록 단일 javascript 파일로 만들어주는 도구입니다. 물론 webpac..
[Nest.js/Prisma] e2e 테스트 시 docker 로 격리된 MySQL 환경 세팅
·
DEV/Node.js
들어가며 안녕하세요. 잡채입니다 🙇🏻 얼마 전 사이드 프로젝트 서버 작업을 하며, e2e 테스팅 중 docker 를 사용해 MySQL DB를 완전히 격리해 테스트 할 수 있도록 환경을 세팅해보았습니다. e2e 테스트 시 애플리케이션의 처음과 끝을 흐름에 따라 모두 테스트 하기 때문에 당연히 DB 접근을 해야합니다. 현재 프로젝트의 경우 개발용 MySQL DB 를 RDS에 올려 사용 중인데 아무리 개발용 데이터베이스라 하여도 여러번 진행되는 e2e 테스트 마다 테스트용 데이터들이 쌓이거나 바뀌도록 구성할 수는 없었습니다. 또한, 현재 사용중인 데이터를 잘못하여 update 시키거나 삭제할 수도 있기 때문에 e2e 테스트 중에는 격리된 데이터 베이스를 새로 구성하고 싶었습니다. 여러 자료를 찾아보던 중 pr..
사이드 프로젝트를 세상에 내놓는다는 것 - HAVIT
·
DEV/잡다한 개발 일지
안녕하세요. 오늘은 맨날 써야지 하고 미뤘던 사이드 프로젝트에 대한 글을 시간 내서 써보려 합니다. 사이드 프로젝트를 해오면서 어떤 일을 했고, 이 과정에서 느낀 점들나 어려움들을 글로 담아보려 합니다.해빗의 시작2022년 1월 국내 최대 IT 벤처 창업 동아리 SOPT 의 장기 해커톤 AppJam (앱잼) 에서 시작한 사이드 프로젝트 해빗(HAVIT)을 약 1년 여간의 개발을 마치고 6개월 전 세상에 공개했습니다. HAVIT은 지식과 정보의 홍수 시대에 콘텐츠를 누구보다 쉽고, 똑똑하게 저장하는 콘텐츠 아카이빙 앱입니다. 언제 어디서든, 보고있던 콘텐츠를 기억하고 싶다면 공유 버튼을 통해 원하는 카테고리에 저장할 수 있습니다. 저장한 콘텐츠를 잊지 않도록 원하는 시간에 알림 설정이 가능하며, 읽은 콘텐..
Oracle Cloud에 Jenkins를 구축해보자 (feat. nginx)
·
DEV/잡다한 개발 일지
들어가며 안녕하세요. 오랜만입니다. 회사 생활로 퇴근하면 너무 피로해 글을 많이 올리지 못했는데 그래도 다시 꾸준히 이것저것 올려보려합니다. 얼마 전, Oracle Cloud의 VM 을 사용해 직접 Jenkins 환경을 구축해보았습니다. 사이드 프로젝트 Havit 을 세상에 내놓을 때까지 아직 CI/CD 라고 할 것도 없이 그냥 Github Actions 를 사용해 후딱 배포 환경을 만들어두고 지냈는데요. 백엔드 스프린트 목표 중 하나로 Jenkins 도입을 생각해놔서 대표적인 CI 툴인 Jenkins를 통해 빌드 환경을 제대로 구성해보려고 합니다. Oracle Cloud 늘 컴퓨팅 머신을 써야 한다면, AWS 프리티어를 이용해 EC2 1개씩 받아서 사용했는데요. 여러 클라우드 서비스 제공 업체들 비교를..
[Wargame] cookie, session basic
·
DEV/injection
들어가며 제법 재밌는 문제들을 발견해서 요즘 풀어보고 있다. wargame 이란 모의 해킹 문제를 제공하던 사이트인데 이 곳이 운영 중단되고 현재는 dreamhack 이란 곳에서 문제를 제공중이다. 처음 가입해서 초심자 문제들을 추천해줬는데 사실 1단계는 웹 개발 지식이 있다면 누구나 풀 수 있는 쉬운 문제들 같다. 나는 보안을 전공으로 하거나 일을 하는 사람은 아니지만, 어떤식의 취약점을 가질 수 있는지 알 수 있는 문제들이 많아서 재밌게 풀어보는 중이다. cookie cookie, 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일을 일컫는다. (위키백과) dreamhack 에서 제공하는 접속 vm 으로 들어가..