전체 288

AWS Chatbot으로 서버 상태 모니터링하기

현재 아키텍쳐는 Elastic Beanstalk에서 서버 이상 상태에 대한 이벤트를 받아서 Lambda 함수에서 슬랙으로 메시지를 전송한다. 하지만 여기서 Lambda 함수에 대한 코드를 사용자가 직접 관리해야 하기 때문에, 이 기능을 AWS Chatbot으로 이전해서 코드에 대한 관리까지 없애보려고 한다. 기존의 플로우에서 람다 -> chatbot으로 전환하는 내용이다. 아래 링크는 기존의 플로우 https://tre2man.tistory.com/303 서버 상태 Lambda와 Slack으로 실시간 확인하기 현재 운영중인 서버는 Elastic Beanstalk으로 관리를 하고 있다. 덕분에 오토 스케일링, 블루그린 배포 등등 서버와 관련된 설정들을 간편하게 관리하는 중이다. 명령어 몇 줄이면 자동으로 ..

tmux 명령어 정리

최근에 맥에서 사용중인 iterm이 오류란 오류는 죄다 뿜어내서 작업에 차질이 생겼다... 그래서 쉘 단에서 터미널 화면을 분할해서 사용할 수 있는 tmux라는 프로그램을 알게 되었고 (ssh 연결 중에도 해당 프로그램 사용이 가능하다!) , 이를 사용하기 위해서 자주 사용하는 명령어에 대해서 정리해 보았다. 설치 맥 기준으로 brew를 이용해 설치한다. brew install tmux 기본 컨셉 tmux 서버 : tmux 내부에서 실행되는 모든 프로그램을 관리하고 추적함. tmux 클라이언트 : 사용자는 클라이언트를 시작하여 tmux 서버에 연결한다. 세션 : tmux를 실행하면 세션이 실행된다. 각 클라이언트는 하나의 세션에 연결이 된다. 윈도우: 세션은 여러개의 윈도우로 구성이 된다. 사용자가 보는..

Kinesis 관련 내용 정리하기

최근 사용자 관련 이벤트를 수집하는 로직에서 문제가 보여서 해당 로직을 개선하기 위해서 방법을 찾아보니 Kinesis를 이용하는 것이 제일 좋아 보였다. 하지만 Kinesis에 관해서 잘 모르기 때문에 한번 정리해 보았다. Kinesis 란? 실시간으로 데이터 스트림을 수집 및 처리할 수 있는 시스템이다. Kinesis에는 총 4가지의 기능이 있다. Video Stream, Data stream, Data Firehose, Data Analytics 가 있다. Data stream 데이터를 실시간 스트림으로 받아서 수집 및 저장을 할 수 있는 서비스. Kinesis Data Analytics, spark, ec2, lambda 등의 서비스로 전송할 수 있다. Data Firehose 데이터를 실시간 스트..

토스 코딩테스트 2022 next 후기

이번에 친구의 추천으로 토스 next 코딩테스트를 보게 되었다. 사실 그냥 내 실력 테스트 느낌으로 한번 보는 거라서, 부담은 딱히 없었다. 서버 부분은 기술 스택이 달라서 Web Automation 분야로 코딩 테스트를 신청했다. 문제들에 대해서는 자세히 말하기 힘들지만, 알고리즘 분야 보다는 실무 작업과 관련된 문제가 많이 나온다는 느낌을 받았다. 프로그래머스 플랫폼을 사용하고 있었고, 문제의 수준은 대체로 적절했던 것 같다. 2시간 30분에 9문제가 나오며, 나는 3문제를 풀고 2문제는 테스트케이스 10개 중 9개를 통과하여 4.8개를 풀었다. 며칠 뒤에 답장이 왔다. 왜 이게 합격했는지는 모르겠다... 이번에 운이 매우 좋았던 것 같다. 이 다음에는 과제 제출인데, 내 기준에는 과제가 난이도가 있..

잡다한 이야기 2022.08.15

AWS Lambda에서 고정 IP 사용하기

개요 이번에 SMS 및 카카오톡 알림톡을 보내는 로직을 커스텀해서 프론트에 API를 제공하는 작업을 하게 되었다. 이 때 '알리고' 라는 서비스를 사용하게 되었는데, 여기서 아이피주소 화이트리스트 (특정한 IP 주소에서 보낸 요청에만 응답하는 것) 를 기본적으로 적용하고 있고, 현재 API 서버와 결합해야 하지만 outbound를 고정하기 힘들고 범용성을 가져야 하는 특정 때문에 Lambda로 제작하기로 했다. 목표 lambda를 사용해서 '알리고'의 API를 사용해 메시지를 보내자. 단, outbound IP 주소는 항상 고정이여야 한다. 구상 글 맨 밑의 참고자료에서 사진을 가져왔다. 간단히 아키텍쳐에 대한 정리를 해 볼려고 한다. 정리 전에 간단한 용어 정리부터 하려고 한다. VPC: 가상 사설 네..

Typescript 유틸리티 타입 탐방하기

타입스크립트에서는 타입을 정의하고, 이를 유연하게 다루고 재가공하기 위한 다양한 기법이 있다. 이 중 타입스크립트에서는 기본적으로 제공되는 몇 가지의 유틸리티 타입이 있다. 공부 목적으로 간단히 정리해 보려고 한다. 입문 타입과 관련된 내용을 유연하게 다루기 위한 기초 문법(키워드)을 간단히 정리해 보려고 한다. 유니온 타입 (Union Type) 가능한 타입들의 종류를 나열한 타입이다. OR연산자로 묶여 있다. // a는 number 또는 string 만 될 수 있다. typeof a 로 타입 판별 가능 let a: number | string keyof 타입에 존재하는 모든 key 값들을 union 형태로 반환한다. type Point = { x: number; y: number }; // P는 'x..

서버 상태 Lambda와 Slack으로 실시간 확인하기

현재 운영중인 서버는 Elastic Beanstalk으로 관리를 하고 있다. 덕분에 오토 스케일링, 블루그린 배포 등등 서버와 관련된 설정들을 간편하게 관리하는 중이다. 명령어 몇 줄이면 자동으로 배포가 가능한 편리한 기능이다. 최근에 서버 운영 중 서버가 죽는 일이 있었다. 이 때 서버 운영 문제를 바로 알았더라면 대응이 조금 더 빨리 되었을 것 같은데, 바로 알아차리지 못해서 대처가 조금 늦었다. 그래서 서버에 문제가 생기거나 상태 변화가 있을 때 바로 슬랙으로 서버 상태를 보내주는 로직이 필요할 것 같아서, 바로 서비스를 구축해보기로 했다. 구상하기 구조는 간단하다. Elastic Beanstalk은 상태 변화와 관련된 이벤트를 EventBridge로 보내주게 된다. 이 이벤트를 잡아서 슬랙으로 이..

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..