전체 글 291

Object 전체 순회하기

TS를 사용하면서 Object에 대해서 전체 순회를 해야 할 일이 생겼다. Object 안의 Object도 모두 순회할 일이 있다 보니, 한번 만들어 두면 나중에도 요긴하게 쓰일 것 같았다. 간단히 생각해보면, 모든 key값을 불러온 뒤에 모든 value에 대해서 순회하면 될 것 같다. 이 때 value가 object일 경우에는 한번 더 순회를 돌려주는 것이다. 이와 같은 생각으로 코드를 작성해 보았다. TS일 경우에는 data의 타입을 any로 두면 편하긴 하다. 단 특정한 타입을 두고 있는 Object일 경우에는 data extends T 로 두면은 타입에 대한 걱정을 조금은 줄일 수 있다.

AWS Amplify를 이용하여 기존의 react app 배포하기

아마존 요금 현황을 확인하니, 잘 사용하지 않는 react 사이트가 ec2 위에 올려져서 계속 돈을 먹는 것을 보았다. 서비스 운영에 필요한 사이트이나 자주 쓰는 사이트는 아니지만 꼭 필요한 사이트이기 때문에 배포 방식을 바꿀 필요가 있었다. 그래서 이것저것 찾아보던 중, 나의 요구사항에 잘 맞는 AWS Amplify라는 서비스를 알게 되었다. (배포 방식의 간편화, 사이트 이용량이 많지 않은 사이트) 그래서 Amplify를 이용해서 react app을 배포할려고 한다. AWS Ampliy 먼저 Amplify부터 알아보고 가자. Amplify는 AWS에서 출시한 모바일 앱 개발에 대하여 다양한 기능을 제공하는 프레임워크이다. 말만 들으면 뭐가 뭔지 모르겠다. 예시를 들어 보자. 1. 여러가지 플랫폼 및 ..

Typescript를 이용한 어플리케이션 Lambda에 배포하기

요즘 lambda가 재밌어 보여서 계속 알아보는 중이다. 람다 (서버리스) 애플리케이션에 대한 설명은 다음 사이트에 잘 나와있다. https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless 서버리스란? 서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다. www.redhat.com 간단히 말하면 서버를 관리할 필요가 없는 환경을 말하는데, BaaS (Backend As A Service)환경에서 작동되는 것을 말한다. 즉, 우리는 실행하는 함수만 작성해서 Lambda에 넘겨주면 람다는 구동환경을 알아서 최적화하여 서비스해준다. 여튼 Typescr..

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