전체 글 291

JS 코딩테스트 준비하기

최근에 코딩테스트를 보면서 알고리즘이 말도 안되게 부족하다는 것을 많이 느꼈다. 그래서 외부 에디터를 사용할 수 있는 환경이라는 상황에서 코딩 결과물을 빠르게 확인할 수 있는 환경을 꾸며볼려고 한다. JS 코딩테스트 환경 꾸미기 목표는 지속적인 테스트와 신속히 결과물을 내는 것이다. 여기서 사용할 것은 nodemon이다. nodemon은 파일이 저장될 때 마다 js파일을 다시 실행켜준다. 그래서 명령어를 따로 입력하여 결과물을 보는 과정이 생략이 된다. node 환경이 설치되어 있다는 기준으로 설명을 할 것이다. 임의 폴더를 하나 생성 후, 다음과 같은 명령어를 입력한다. npm init npm i nodemon 이후에 package.json 파일에 스크립트를 하나 추가한다. ... "scripts": ..

카카오톡 학식봇 AWS Lambda로 전환하기

2년 6개월 전 쯤, 카카오톡 챗봇으로 학식 정보를 알고 싶어서 봇 서비스를 하나 만들고 운영했던 적이 있다. https://tre2man.tistory.com/158?category=795873 카카오톡 학식봇 만들기 - 2 카카오 오픈빌더 사용하기 학식을 알려주는 카카오톡 봇을 만들기 위해 필요한 것만 간단히 알아보자. 먼저 봇 제네릭 메뉴를 설정해 보자. 봇 제네릭 메뉴는 채팅창 하단에 고정되어 있는 버튼 tre2man.tistory.com 지금 생각하면 상당히 부끄러운 실력이지만, 그래도 어떻게든 프로덕트(?)를 만들었다는 것에만 심취해서 방치하고 있었다. 그렇게 몇 년이 지나 방치되었던 프로젝트에도 서서히 문제가 생기기 시작했다. 큰 문제는 아니지만, 내가 생각했던 문제는 다음과 같다. EC2에..

이벤트 데이터 파이프라인 제작하기

최근에 이벤트 관련 데이터 파이프라인을 분리하는 작업을 시작했다. 기존에는 서비스를 운영하면서 나오는 모든 이벤트들을 DB에 저장하는 것을 보고, 언젠가는 꼭 해결한다고 했는데 그걸 이제야 시작한다. 해당 로직을 구상하기 위해서 여러 방법들을 구상한 결과, 기존 AWS 도큐먼트에 있는 시스템을 이용해 보는 것이 좋겠다고 생각했다. 구상하기 현재 시스템은 특정 이벤트에 대한 내용을 클라이언트에서 4곳의 서버 (사용자 분석 툴)로 데이터를 보내주고 있다. 이 중 하나는 DB로 이벤트를 보내게 되는데, 이 시스템 자체가 상당히 비효율적이라는 생각이 들었다. DB는 주로 사용자의 데이터 및 프로덕트의 가변 정보들을 저장하는 곳인데, 이벤트에 대한 데이터를 DB에 저장하기에는 목적에도 맞지 않고 DB 및 WAS에..

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로 보내주게 된다. 이 이벤트를 잡아서 슬랙으로 이..