본문 바로가기

분류 전체보기33

[42Blind] Service 계층 통합 테스트 이 글은 NestJS를 사용하면서 Service 계층 통합 테스트에 대한 고민을 다룬 글입니다.아직 이해가 부족한 부분이 많기 때문에 더 좋은 방향을 알려주시면 큰 도움이 될 것 같습니다. 한 줄 요약SQLite In-memory DB를 활용한 통합 테스트를 진행하기로 결정했습니다.Github Action을 활용한 e2e 테스트에서 실제 배포 환경과 동일하게 구성하여 진행하고,필요시 Testcontainers를 도입하거나 단위테스트로 분리하는 리펙토링을 진행하기로 결정했습니다. Service 계층 테스트 문제점처음 테스트를 작성할 때, 모든 의존성을 Mock/Stub를 사용해서 단위 테스트를 작성하는 방식으로 접근했습니다.하지만 현재 비즈니스 로직은 단위 테스트를 진행할 만큼 복잡하지 않았고, Jest에.. 2024. 2. 25.
[42Blind] TDD와 Github action 도입 한 줄 요약현재까지의 개발 프로세스에 문제점을 느끼고 해결 방안으로 TDD를 도입하기로 결정했습니다. 테스트를 자동화하기 위해 github action workflows를 추가했으며, 런타임 환경이 추가됨에 따라서 환경변수를 정의하는 .env 파일을 분리했습니다. TDD 도입Github action workflows 추가OS: ubuntu-22.04DB: mysql 8.0.35 (default)Engine: Node.js 20.11.0Test: Jest ^29.5.0환경변수(.env) 분리.env.prod: 프로덕션 환경.env.local: 로컬 개발 환경secrets.ENV_TEST: github action 테스트 환경 개발 프로세스 문제점1. 지금 API 테스트 가능한가요? 프론트와 협업을 진행하면.. 2024. 2. 5.
[혼공컴운] 레지스터와 캐시 메모리의 차이가 무엇인가요? 레지스터 레지스터는 CPU가 연산을 위해 명령어와 데이터를 저장하는 위한 임시 저장 장치이다. CPU 안에는 목적에 따라 여러가지 레지스터들이 존재한다. ﹒프로그램 카운터(PC, Program Counter) ﹒명령어 레지스터(IR, Instruction Register) ﹒메모리 주소 레지스터(MAR, Memory Address Register) ﹒메모리 버퍼 레지스터(MBR, Memory Buffer Register) ﹒플래그 레지스터(FR, Flag Register) ﹒범용 레지스터 ﹒필요에 따라 누산기, 기억 레지스터, 주소 레지스터, 색인 레지스터 등의 기능을 수행 ﹒스택 포인터(SP, Stack Pointer) ﹒베이스 레지스터(BR, Base Regiester) 레지스터의 이름은 제조사마다 .. 2023. 11. 30.
[Linux] SSH가 무엇인가요? shell 쉘(shell)은 kernel을 제어하기 위한 인터페이스이다. kernel을 마치 껍데기처럼 감싸고 있다는 의미에서 shell이라는 이름이 붙었다. 커널(Kernel)은 쉘로부터 명령(cat, ls 등)을 받아 CPU, I/O, 메모리 등 다양한 리소스에 접근한다. 쉘은 bash, zsh 등 여러가지 종류가 있다. bash는 기존의 Bourne Shell을 대체하기 위해 만들어진 Unix용 쉘이다. 대부분의 리눅스 운영체제에서 기본으로 채택하고 있다. zsh은 bash, ksh, tcsh의 기능을 결합하여 만든 쉘로 bash보다 다양한 기능을 지원한다. 현재 macOS에서 기본으로 채택하고 있다. ssh ssh(Secure Shell)는 네트워크 상의 다른 컴퓨터에 원격으로 시스템에서 명령을 .. 2023. 11. 28.
[Linux] 접근 통제 방법 DAC와 MAC 접근통제(Access Control) 접근 통제란 디렉터리나 파일, 네트워크 소켓 같은 시스템 자원을 적절한 권한을 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것이다. 시스템 자원은 객체(Object), 자원에 접근하는 사용자나 프로세스는 주체(Subject)라고 부른다. DAC(Discretionary Access Control) 임의 접근 통제(DAC)는 시스템 객체에 대한 접근을 사용자나 또는 그룹의 신분을 기준으로 제한하는 방법. 즉, 자원의 소유자가 자원에 대한 다른 사람들의 권한을 직접 제어하는 방법이다. 객체에 적용된 DAC 접근 통제는 퍼미션 정보를 통해 확인할 수 있다. 권한을 저장하는 방법에는 대표적으로 ACL(Access Control List), CL(Capability.. 2023. 11. 28.
[Linux] Debian과 Rocky Linux Debian데비안(Debian)은 Ian Murdock와 당시 그의 여자 친구 Debra가 만든 GNU/Linux 기반 운영체제이다. 데비안은 리눅스에서 파생된 것이 아니며, KFreeBSD이나 NetBSD 등 다른 커널을 탑재한 데비안도 존재한다. 가장 많이 사용되는 서버용 OS인 우분투도 데비안을 기반으로 만들어졌다.지난 12개월 동안의 Google Trend 결과 우분투가 압도적으로 많다.Rocky Linux데비안과 함께 대표적인 리눅스 배포판으로 레드햇(Red Hat) 리눅스 혹은 레드헷 엔터프라이즈 리눅스(RHEL, Red Hat Enterprise Linux)가 있다. RHEL는 2003년 이후 유료화되어 판매되고 있다. Fedora 리눅스 또한 레드헷에서 후원하는 레드헷 계열 리눅스이다. R.. 2023. 11. 28.