전체 288

AWS configure (cli) 다중 계정 사용하기

aws를 사용하면서, 하나의 계정이 아닌 여러개의 계정을 사용할 일이 많아졌다. 거의 모든 작업을 콘솔에서 할 수도 있지만, 익숙하다면 cli 환경이 좀 더 나은 것 같다. 여튼 다중 계정 설정을 cli에서 사용해보자. 다중 계정 설정하기 m1 mackbook에서 진행한다. 컴퓨터에 미리 aws cli를 설치해두자. 기존의 aws configure 명령어를 이용하면 IAM 엑세스 키를 입력하여 사용자를 인증할 수 있다. 여기서 --profile 옵션을 붙여 프로필을 나눌 수 있다. 1 aws configure --profile newProfile cs 이후 .aws 폴더 안에 있는 파일들을 확인하자. config와 credentials란 파일이 있는데, config는 사용자에 대한 정보, credenti..

Prisma ORM 사용 시 읽기 전용 DB 사용하기

현재 NestJS + Prisma 조합으로 백앤드를 운영중이다. 요즘 읽기 부하가 늘어남에 따라 replica DB를 따로 생성하여 read 동작은 모두 replica DB에서, 나머지 동작은 master DB에서 사용하고 싶었다. 그래서 doc를 찾던 중, 아직은 prisma에서는 정식으로 replica DB를 지원하는 공식 문서는 없었다. prisma의 기본 정신이 빠른 백앤드 서버 제작을 목표로 해서 그런가? 이건 좀 많이 아쉬웠다. 옆동네 typeORM은 잘 지원해 주던데. 아직 오픈이슈인걸로 봐서는 언젠간 개발해 주지 않을까 싶다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 "replication": { "master": { "host": "master..

리눅스 date 사용하기

서버 배포 시에 마지막으로 배포한 시간을 알기 위한 스크립트를 작성하던 중, date라는 단순하지만 강력한 시간 출력을 제공하는 도구를 알게 되었다. 이 명령어를 자유자재는 아니지만 부족하진 않을 정도로 다루고 싶다는 생각이 들어 블로그에 잠깐 정리하려 한다. 날짜 출력 형식 옵션 기본 명령어 date를 치면 된다. 하지만 이걸로는 많이 부족하다. 출력 형식을 지정해서 다양하게 꾸며보자. 출력 형식 지정법은 date +"포맷" 형식을 따른다. 아래는 예시이다. date +'%Y-%m-%d %H:%M' # 2022-04-25 22:59 대표적인 포맷은 다음과 같다. %a : 축약된 요일 %A : 요일 풀네임 %b, %h : 축약된 월 이름 %B : 월 풀네임 %c : 로케일의 날짜 및 시간 %C : 마지막..

Docker 운영 시 용량 부족할 때

현재 ec2 인스턴스에서 jenkins를 이용하여 docker image를 빌드하는 작업을 계속 진행하고 있다. 이 때 갑자기 경고창이 떴다. 용량이 부족하다고 징징댄다. EBS에 16GB나 할당해주었는데... 바로 ssh 접속후 df 명령어로 인스턴스의 남은 용량을 확인해 보았다. 결과는 약간 충격적이였다. Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 1000672 0 1000672 0% /dev tmpfs 1009664 0 1009664 0% /dev/shm tmpfs 1009664 432 1009232 1% /run tmpfs 1009664 0 1009664 0% /sys/fs/cgroup /dev/xvda1 16764908 15732..

Jenkins를 이용하여 Docker 애플리케이션 배포하기 [3]

이전 게시물에서는 elastic beanstalk에 배포하는 플로우까지 제작해 보았다. 하지만 배포가 끝났을 때 알려주는 로직이 있으면 조금 더 확실히 배포에 대해서 인지할 수 있지 않을까? 라는 생각이 들었다. 배포가 정상적으로 이루어지면 좋은거고, 만약 배포에 예상치 못한 원인으로 실패했을 때도 알람을 주면 좋겠다는 아이디어가 있어 찾아보니, jenkins에는 slack과 연동해서 slack에 message를 보낼 수 있었다. 이를 이용해서 배포 결과를 slack으로 보내 보겠다. 참고로 모든 슬랙 메시지와 채널의 이름은 영어로 하는 게 좋다. slack 설정 먼저 기존에 이용중인 슬랙이 있어야 한다. 슬랙에 메시지를 전송받을 채널을 만든 후, 좌측 하단의 앱 -> 앱 추가 버튼을 눌러야 한다. 추가..

윈도우 컴퓨터 원격 제어 환경 조성하기

현재 나는 M1 맥북을 주로 사용하고 있다. 밖에 나갈때는 작업용으로 항상 맥북을 들고 다닌다. 작업을 할 때 종종 윈도우가 필요한 작업이 있을 때가 있다. (주로 한글...) 인텔 맥북 같으면 부트캠프를 통해서 윈도우를 깔고 다니겠지만, M1은 그런거 없다! 그래서 이를 해결하기 위해서 어디서든 원격으로 윈도우 환경에서 작업하기 위한 설정을 해 보겠다. 플로우 원격 부팅 -> 원격 접속의 순서대로 진행하면 윈도우 컴퓨터에 접속하게 할 것이다. 준비물 WOL 지원 공유기, WOL 지원 데스크톱 메인보드가 필요하다. 원격 부팅 (WOL) 설정 하기 먼저 WOL을 설정해야 한다. Wake ON Lan의 줄임말로서, PC에 전원 신호를 LAN을 통해서 줄 수 있게 한다. 컴퓨터 전원을 킬 때는 특정 부분을 쇼..

IT 이야기 2022.03.23

[Prisma] Can't reach database server at `db` 에러 해결하기 (IN 연산 관련)

NestJS의 ORM으로 Prisma를 사용 중이다. 여기서 특정 연산을 수행했을 떄 Can't reach database server at `db` ... 이라는 문구가 뜨면서 DB connection이 끊기는 현상이 발생했다. 다른 연산은 모두 정상적으로 작동하는데 특정한 연산에 대해서만 이러한 문제가 발생했다. 여기서 Prisma의 동작 원리를 알아봐야 하는데, Prisma는 개발자의 생산성 및 Migration을 쉽게 하기 위함에 초점을 맞춘 ORM이다. PrismaClient에 json 파일을 입력한다. 이 json 파일은 Prisma 자체적으로 sql 쿼리로 변환한다. Prisma가 sql 쿼리로 변환하는 과정에서 문제가 생기는 것이다. 예를 들어 (raw query 기준) "publi 스키마..

서버 인프라/DB 2022.02.26

sh: /usr/local/bin/nvim: No such file or directory 에러 해결하기

처음 이 오류를 발견한 것은 vscode를 사용할 때, github source control을 사용할 때 git push를 할려고 할 때 에러 메시지로 sh: /usr/local/bin/nvim: No such file or directory 라는 문구가 떴다. 그때는 대수롭지 않게 여기고 터미널 git push를 통해 에러를 해결했다. 하지만 나중에 psql을 사용하면서 똑같은 에러가 뜨기 시작했다. 여기서부터는 우회 방법이 없었기에, 이 문제를 해결해야 했다. 에러 메시지는 해당 위치에 vim프로그램이 존재하지 않다는 오류였다. 이를 확인하기 위해 해당 위치를 들어가니 실제로 nvim 파일이 없었다. (본인은 vi 대신 nvim을 사용중이다) 그래서 nvim을 brew를 통해서 재설치를 한 다음, ..