일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- bag of words
- 웹보안
- 슬랙 파일업로드 제한
- Rate Limit
- 스케일 큐브
- 해킹
- Spark
- 슬랙
- FCM
- Tuckman
- 알림무시
- 머신러닝
- 이미지 푸시
- 파이어베이스
- 슬랙 파일업로드
- kafka
- n-gram
- Slack Rate Limit
- Scouter
- 코어/컨텍스트
- 카프카 성능
- Core/Context
- 카프카
- Scale Cube
- 팀 발달 모델
- Slack File Upload
- 자연어처리 #konlpy #형태소분석
- firebase
- 스카우터
- Slack Limit
- Today
- Total
목록분류 전체보기 (48)
플랫폼 개발팀 기술 블로그
슬랙에는 여러가지 방식으로 다른 서비스로부터의 외부 호출을 제공하는데, API Call을 통한 파일 업로드, 메세지 발송과, 심플하게 메시지 전송을 호출할 수 있는 WebHook 등을 제공하고 있다. 우리도 각종 알림용도로 여러 서비스에 연동해서 사용하는데, (메일 알림.. 장애 알림.. 등) 요청이 많지 않던 그 동안은 별 무리 없이 사용 하던 중 몇가지 제한사항이 발생했다. Slack API 자체에서 일정 발송 횟수 이상이 넘어갈 경우 Too Many Request(429) 오류를 내뱉으며 잠시간 Block 상태가 되버려 요청들이 다 막히게 된다. 일반 메시지의 경우 여러개의 WebHook을 번갈아 가며 사용(WebHook 1개당 초당 1회 제한)하는 방식으로 어느정도 잦은 요청도 극복이 가능했지만,..
목표 스카우터 슬랙 플러그인을 커스터마이징하여 일부 요청에 대한 알림 여부를 다르게 하고, 요청 설정 목록을 서버 중단 없이 갱신하는 기능을 추가한다. * 스카우터에 대한 자세한 설명은 블로그 내 다른 포스트인 https://team-platform.tistory.com/14 에서 다룬다 우리는 개발되어 서비스 중인 자바 프로세스 들을 스카우터를 통해 관리하고 있다. 또한 프로세스들의 장애 알림 처리는 스카우터의 빌트인 플러그인인 슬랙(scouter-plugin-server-slack) 플러그인을 통해 수행하고있다. 이를 통해 스카우터 Xlog에서 에러로 감지된 요청이나 응답이 오래 걸린 요청들은 슬랙을 통해 알림을 받고 있다. 근데 그래서 왜? 우리가 운영하는 여러 서비스들의 다양한 요청들 중, 일부의..
Google AMP란? AMP는 Accelerated Mobile Pages의 약자로 가속화된 모바일 페이지라고 직역 할 수 있다. Google에서 공개한 오픈소스 라이브러리로 특징으로는 정적 콘텐츠의 빠른 렌더링이 가능한 웹페이지를 제작 할 수 있도록 규격화된 기능을 지원한다. 기존의 웹 페이지 기술을 그대로 사용하고 있고 다양한 브라우저에서 지원되고 있다. AMP를 왜 사용하는 것일까? 웹 사이트의 성능최적화와 CDN을 무료로 사용 할 수 있다. AMP가 적용된 웹 사이트는 구글 검색 순위에서 우선적으로 노출 될 수 있다. 웹 사이트 제작 도구와 다양한 템플릿을 무료로 제공하고 있다. AMP의 주요 기능 Google AMP는 웹 페이지를 빠른속도로 렌더링 하기위해 html코드를 작성하기 위한 규격이 ..
지난 Docker : 컨테이너 오케스트레이션 개요 편에서는 한 서비스가 점차 확장되면서 컨테이너 증가에 따른 관리의 필요성과 다수의 컨테이너를 효과적으로 다룰 수 있는 컨테이너 오케스트레이션 툴에 대한 개요를 설명 하였다. 이번 편에서는 도커스웜의 노드 클러스터링 구축과 스웜 로드밸런서의 기능을 확인해보는 실습을 진행하도록 하겠다. 도커스웜의 노드 클러스터링 노드 클러스터링(Node Clustering)의 노드(Node)는 도커스웜에서 물리적 또는 논리적으로 분리 된 독립적인 서버(Server)를 의미하고 클러스터링(Clustering)은 사전적 의미로 뭉치기라는 뜻을 가지고 있다. 즉 노드 클러스터링은 서버의 군집화라고 표현 할 수 있다. 필자는 3개의 노드를 클러스터링 하기 위해 VirtualBox의..
[스파크(Spark)] #1. 개요 [스파크(Spark)] #2. 용어 및 개념 [스파크(Spark)] #3. 구조적 API 개요 및 기본 연산 이번에는 구조적 API의 개요 및 기본 연산에 대해서 알아본다. DataFrame와 Dataset은 둘 다 Row와 Column을 가지는 불변성을 가지는 분산 테이블 형태의 컬렉션이다. Dataset은 JVM 기반이므로 java와 scala를 지원하지만 Python은 지원하지 않는다. python 코드로 검증을 할 예정이므로 DataFrame 기준으로 설명한다. 참고 Spark API 관련 자세한 부분은 Spark Docs를 참고하자. DataFrame을 가공 관련 부분은 pyspark.sql 모듈을 사용한다. Python Docs SparkSession Spa..
[스파크(Spark)] #1. 개요 [스파크(Spark)] #2. 용어 및 개념 [스파크(Spark)] #3. 구조적 API 개요 및 기본 연산 스파크가 무엇인지에 대한 개요에 대해서 알아보았다. 이번에는 핵심 용어 및 개념에 대해서 알아본다. 스파크 애플리케이션 아키텍처 사용자는 클러스터 매니저에게 스파크 애플리케이션을 제출한다. 클러스터 매니저는 제출받은 애플리케이션 실행에 필요한 자원을 할당하고, 스파크 애플리케이션은 할당받은 자원으로 작업을 처리한다. 스파크 애플리케이션은 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성된다. 드라이버 프로세스는 클러스터 노드 중 하나에에서만 실행한다. 즉 main() 함수를 실행한다. 익스큐더는 다수의 도드에서 실행하며, 드라이버가 할당한 작업을 수행한다. 사..
컨테이너 오케스트레이션 개요 도커 컨테이너의 갯수가 꾸준히 늘어나면 필요한 자원도 지속적으로 늘어나기 마련이다 때문에 서버 또한 여러대로 늘어날 수 있는데 한대 두대의 수준이 아니라 몇 십 몇 백대의 서버로 늘어났다고 가정 해보자 이 많은 서버들을 일일이 접근하여 명령어 날려주고 컨테이너 올리고 "어? 이건 또 왜 내려갔어?" 하다가 시간은 시간대로 흘러버리고 정신을 차려보면 라꾸라꾸 침대가 본인 의자옆에 있는것을 발견 할 수 있을것이다. 결론적으로 이 많은 서버들과 컨테이너를 소수의 인원으로 관리하기에는 상당히 어렵고 이 문제를 효율적으로 관리하기 위해 컨테이너 오케스트레이션 툴들이 나오게 되었다. 컨테이너 오케스트레이션 툴 소개 컨테이너 오케스트레이션 툴의 기능에는 단순 컨테이너의 배포 뿐만이 아닌 ..
외부에서 제작한 회의실 예약을 관리하는 서비스를 사용중이다. 이 서비스에서 예약한 회의 30분 전에 회의 참가자들에게 알림을 주고 싶다는 요구사항이 생겼다. 외부에서 제작한 서비스이기 때문에 직접 서비스에 기능을 추가할 수 없는 상황이었다. 다만 서비스에서 회의실 예약 정보를 저장하고 있는 DB의 테이블과 자료의 형식은 알고있었다. 그래서 해당 테이블을 감시하면서 다가온 회의실 예약에 대해 알림을 제공하는 프로그램을 만들기로 하였다. 예약 정보는 DB에서 가져왔지만, 이걸 알림을 주려면 뭘로 해야할지 고민이 되었다. 쉽게는 텔레그램 같은 메신저로 보내도 되고, 사내에서 사용하는 로켓챗을 이용해도 된다. 여러가지를 고민하다가 구글캘린더에 일정으로 등록해주면 이 예약정보를 다양하게 활용이 가능하겠다는 생각을..