전체 글(19)
-
100만 건 이상의 데이터를 처리하기 위한 방안에 대한 이야기
현재 진행 중인 프로젝트에 대해서 가볍게 설명하자면, 네이버 스트리밍 플랫폼인 치지직의 서드파티로서 채팅 수집 및 통계를 내는 사이트를 개발 중에 있다. 채팅이 가장 활발하게 이뤄지는 저녘 시간대는 스트리머 방송마다 초당 10건~50건 정도의 채팅이 발생하고 모든 스트리머를 수집한다고 하면 그 데이터의 양은 천차만별로 달라지게 된다. 채팅을 수집하고 그 데이터를 토대로 통계를 실시간으로 내려고 하다보니 발생하는 문제는 성능에 있다.현재 서버는 AWS Lightsail에 웹 서버와 DB, 스토리지를 위탁한 상태이다. EC2의 경우 사용량에 비해 너무 많은 금액이 나오는 문제가 있어 Lightsail로 옮겨왔지만, 최근 수집하는 데이터의 양을 늘리고 난 뒤부턴 문제가 되어왔다. 어디선가부터 병목현상이 발생..
2024.06.20 -
AWS Lightsail 사용기 #1 서버 세팅
Lightsail을 적용하게 된 계기는 아주 심플하다. 개인 프로젝트나 팀 프로젝트를 진행할 때 보통 AWS 서버를 즐겨쓰고 있다. EC2서버에 올려두고 github workflow 세팅을 통해 CI/CD만 잘해두면 직접 사용하기도 편하지만, 팀원들이 접근할 때도 굳이 서버 Repo를 받아 서버를 올리고 하는 등의 작업이 필요없기 때문에 프로젝트 진행면에서 굉장히 수월해진다. 문제는 그 편의성에 대한 보답으로 아래와 같은 청구서를 받게된다.개인, 팀 프로젝트를 진행한다고해도 그 트래픽 자체가 굉장히 소소하기 때문에 위처럼 청구서를 받아버리면 참으로 안타깝기 그지없다.운 좋게 런칭에 성공해서 트래픽이 과다하게 발생한 거라면 이해를 하겠지만... 회사 업무가 바빠진 상황에서 아무 트래픽도 발생하지않는 내 프..
2024.04.02 -
ES6+TypeScript의 getter, setter, 접근제한자 활용하는 방법
JavaScript ES6 부터는 Getter와 Setter를 적용 할 수 있도록 get, set property를 정의 할 수 있는 문법이 추가되었습니다. JavaScript 개발자들은 get과 set 메소드를 직접 선언하여 직접적인 변수 호출을 피하고, 정보의 은폐와 유지보수성을 강화하기 위해 자체적인 컨벤션을 통해 멤버 변수를 선언하고 이러한 접근 방식을 선호했습니다. 아래는 그 예시입니다. class LoginModule{ _loggedIn = false; constructor(){}; getLoggedIn() { return this._loggedIn; } setLoggedIn(value) { this._loggedIn = true; } } 위와 같이 _(UnderScore)를 통해 privat..
2024.03.26 -
도커를 활용한 서비스 배포하기 (오프라인 설치 .tgz) #9
개요 오프라인 환경에서 Docker 설치를 위해 rpm 설치 방법 및 의존성을 파악하고 모든 세팅을 마쳤다. 고객사에 방문하여 설치만 하면 된다. 명령어가 정리된 작업계획서를 전달하였고 방문 전날 퇴근전😲 Docker RPM 설치를 진행하면 안된다는 청천벽력같은 소리를 들었다. RPM으로 설치하게 되면 특정 폴더가 꼬일 수 있다는 문제제기로 인해서 였고, 그에 대한 충분한 반박을 하지 못하였기 때문에 어쩔 수 없이 따르게 되었다... 하늘이 무너져도 솟아날 구멍은 있다고 했나. 작업환경 운영체제 : Centos 7 다행히도 Docker는 binary 파일을 제공하고 있었다. 아래 링크에서 원하는 버전을 받을 수 있다. https://download.docker.com/linux/static/stable/..
2022.07.18 -
도커를 활용한 서비스 배포하기 (일반사용자 권한 부여) #8
https://do-mi.tistory.com/12 도커를 활용한 서비스 배포하기 (rpm 설치) #1 현재 패치 및 가용성 문제를 해결하기 위해 docker를 설치해야 하는 서버는 dmz망과 같이 특정 대역에서의 접속만 허용이 되어있는 상태 yum install 불가 직접 rpm 파일을 받아서 패치하기로 결정 먼 do-mi.tistory.com 해당 과정을 통해 Docker 설치 후 Root 권한을 계속 사용 할 수 없는 문제가 있다는 것 잊고 있었다. 특정 유저로 터미널 로그인 후 도커를 사용하려고 하니 아래와 같이 Permission Denied 메세지가 발생한다. 실서버 작업을 하기 전에 인지하게 되서 다행이라 생각하고 작업을 진행해보도록 하자. [user@localhost docker]$ doc..
2022.07.01 -
도커를 활용한 몽고 DB 설치하기 #3 (MongoDB Compass)
앞서 MongoDB 용 GUI툴인 Robomongo에 대해서 설명을 했다. 세팅을 마친 후 확인해보니 계정을 생성하라는 메시지가 뜨길래 생성 후 접속하니 30 일만 사용 할 수 있는 유료 프로그램인 것이다. 아무리 기능이 좋아도 가난한 개발자에게 유료 프로그램은 사치다. 혹 다른 툴 있는지 찾아보니 MongoDB 자체에서 제공하는 Compass라는 툴이 있다. 아래 링크를 통해 받아서 실행하면 바로 사용 할 수 있을 정도로 간단하게 설치가 된다. https://www.mongodb.com/try/download/compass MongoDB Compass Download MongoDB Compass, the GUI for MongoDB, is the easiest way to explore and mani..
2022.06.27