[Linux sudo 설정] 비밀번호 없이 sudo 사용 및 기타 유용한 Defaults 설정
·
linux
1. 간단 소개 (배경/목적)리눅스 서버를 쓰다 보면 매번 sudo에 비밀번호를 입력하는 게 은근히 귀찮았다.특히 자동화 스크립트나 CI/CD 파이프라인에서 “여기서도 비밀번호…?” 하고 삑사리 나면 정말 짜증났다.그래서 이번엔 비밀번호 없이 sudo를 쓰는 법뿐만 아니라 자주 쓰는 Defaults 옵션들까지 한 번에 정리해봤다. 무작정 따라하기2.1 visudo로 안전하게 편집하기sudo visudo- /etc/sudoers를 직접 고치지 말고 꼭 visudo로만 수정해야 한다.- 문법 오류가 나면 sudo 전체가 멈출 수 있으니 주의한다.2.2 비밀번호 없이 sudo (NOPASSWD)# 사용자 단위your_username ALL=(ALL) NOPASSWD: ALL# 그룹 단위 (예: sudo 그룹..
[NestJS 테스트코드] Postgres, MongoDB 환경에서 유닛 & E2E 테스트 제대로 해보기
·
Nest.js
NestJS를 쓰면서 테스트 코드를 생각한다면 자연스럽게 jest 기반 테스트 환경이 따라온다.이번엔 뜨도록 프로젝트가 어느정도 안정되어 미루고 미뤄뒀던 테스트 코드 작성을 끝낸 기념으로 이 글을 작성한다.근데 생각보다 복잡하다. 내경우에 postgres, mongoDB를 사용중인데,- SQLite 썼다가 타입 오류에 머리 싸매고- Mongo는 또 Mongo대로 memory-server 세팅이 다르고... 그래서 정리했다. 의존성 설치부터 pg-mem + mongodb-memory-server까지.기본 테스트 환경 구성설치npm install --save-dev jest @nestjs/testing ts-jest @types/jest- jest: 테스트 실행기- @nestjs/testing: NestJS..
[DevOps 삽질일지] Vercel Hobby + Private Repo로 모노레포 배포하기
·
devops
배경 설명뜨도록 프로젝트 처음 셋팅 시 프론트 개발자분이 next를 선택하셨고, 익숙하게 vercel hobby플랜에 public repo로 연결하여 배포해주시던 상황이었다.하지만 프로젝트를 진행하면서 해당 repo를 private으로 돌려야할 일이 발생해 CLI + GitHub Actions 방식으로 갈아타게 되었다.같은 상황의 소규모 프로젝트(특히 모노레포)에게 도움 되길 바라며 삽질 과정을 남긴다.Vercel 쪽 준비현재 프론트쪽은 모노레포 구조에 2개의 프로젝트로 구성되어있다.각각 따로 배포되어야 하므로 프로젝트를 2개 생성해 진행한다.할 일실전 메모프로젝트 2개 생성dddorok-web, dddorok-admin (모노레포라 app 디렉터리별 분리)GitHub 연동 끊기Settings ▸ Git..
[NestJS - 트러블 슈팅] 몽고 DB replicaSet 없이는 트랜잭션 불가능
·
Nest.js
1. MongoDB 트랜잭션을 NestJS에서 써보자!뜨도록 프로젝트 진행 중 사용자 프로젝트와 차트를 동시에 생성하는 기능을 만들고 있었다.여러 컬렉션(chart_parts, user_projects)에 데이터를 쓰는 구조였기 때문에, 당연히 트랜잭션이 필요했다.const session = await this.chartPartModel.db.startSession();session.startTransaction();try { await this.chartPartModel.create([{ ... }], { session }); await this.projectModel.create([{ ... }], { session }); await session.commitTransaction();} catc..
[네트워크 기초] IP 주소와 서브넷, 그리고 클래스와 CIDR
·
네트워크
1. IP 주소란 무엇인가?IP 주소는 네트워크 상에서 각 장치를 구분하기 위한 주소 체계이다.IPv4 기준 32비트로 구성되며, 0~255 범위의 숫자 4개로 표현된다. 예: 192.168.0.1지구상에서 할당 가능한 IPv4 주소의 총 갯수는 2^32 = 약 43억 개이다.2. 특수한 IP 주소: 0과 127다음과 같은 IP 대역은 일반 통신에 사용할 수 없다.주소설명0.0.0.0자신을 아직 식별하지 못한 상태 (로컬 주소 없음)127.0.0.0/8루프백(Loopback) 주소, 자기 자신 테스트 용도 (127.0.0.1)따라서 0과 127로 시작하는 IP는 실제 네트워크 통신용으로 사용할 수 없다.3. IP 클래스(Class) 체계초기의 IPv4 주소는 아래와 같이 5개의 클래스로 나뉘었다. 클래..
[네트워크 기초] OSI 7계층과 TCP/IP 모델 정리
·
네트워크
1. 네트워크??네트워크(Network)란 두 개 이상의 컴퓨터 또는 장치가 데이터를 주고받기 위해 연결된 상태를 의미한다.유선(LAN 케이블) 또는 무선(Wi-Fi) 방식 모두 포함하며, 장치 간에 통신이 가능한 모든 연결 형태를 아우른다.2. LAN, WAN, Internet의 구분분류설명실무 예시LAN (Local Area Network)근거리 네트워크. 보통 하나의 건물이나 공간 안에서 구축된다.회사 내 사무실, 가정용 공유기 환경WAN (Wide Area Network)멀리 떨어진 네트워크 간의 연결. 통신사의 백본망을 포함한다.본사와 지사 연결, 인터넷 백본Internet전 세계 모든 네트워크가 상호 연결된 형태우리가 사용하는 ‘인터넷’ 전체실무에서는 "같은 LAN에 있다"는 말이 곧 직접 연..