목록전체 글 (245)
오늘도 한 뼘 더

# 배경 AWS Lambda를 통해 알림톡 발송을 지정해뒀는데 알림톡이 갑자기 3번 발송되는 현상이 발생했다. # 문제 원인 Lambda의 일반 구성 > 제한 시간 기본 값이 3초로 설정되어 있다. Log를 확인하니 해당 Lambda의 실행 시간이 3초가 넘어 timeout이 나면서 재시도를 하였다. > Lambda는 함수가 실패하면 재시도를 2번 하도록 기본 설정되어있다. # 해결 방법 제한 시간을 최대 15분까지 늘릴 수 있다. 일단은 1분으로 시간을 늘린 뒤에 로그를 통해 제한시간을 변경하는 것이 좋을 것 같다.

# 배경 Backend 서비스를 배포한 뒤에 로컬에서 잘 동작한 API가 동작하지 않는 것을 확인하였다. 계속해서 404 Not Found에러가 뜨는 것을 확인하였다. # 문제 원인 Jenkins로 배포를 진행하는데 Console Output을 보니 Go module이 Dockerfile에 지정된 Go 버전에서는 지원하지 않아서 생긴 문제였다. # 해결방법 Dockerfile에서 golang 이미지를 받는 버전을 바꾸어주면 해결이 된다. 수정 전 FROM golang:1.15.6 AS builder 수정 후 FROM golang:1.16 AS builder

# 문제 https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net # 입력 예제 5 # 출력 예제 * ** *** **** ***** # 코드 package main import "fmt" func main() { var a int fmt.Scan(&a) for i := 0; i i; j-- { fmt.Print(" ") } for j := 0; j

# 문제 https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net # 입력 예제 5 # 출력 예제 * ** *** **** ***** # 코드 package main import "fmt" func main() { var a int fmt.Scan(&a) for i := 0; i < a; i++ { for j := 0; j

# 문제 https://www.acmicpc.net/problem/11022 11022번: A+B - 8 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다. www.acmicpc.net # 입력 예제 5 1 1 2 3 3 4 9 8 5 2 # 출력 예제 Case #1: 1 + 1 = 2 Case #2: 2 + 3 = 5 Case #3: 3 + 4 = 7 Case #4: 9 + 8 = 17 Case #5: 5 + 2 = 7 # 코드 package main import ( "bufio" "fmt" "os" ) func main() { var a, b, length int reader := bufio.NewReader(..

# 배경 어느 날인가부터 오류를 쌓는 곳에 해외 IP에서 인입되는 에러들이 나타난 것을 발견했다. 현재 회사에서 운영하는 페이지는 해외 사용자들 대상이 아니기 때문에 해외 IP를 막기로 하였다. # WAF 사용하여 해외 IP 차단하기 1. Web ACLs 생성하기 - Create web ACLs 클릭 - Web ACL 설정 2. 사용할 AWS 리소스 선택 - 백엔드 서비스로 유입되는 해외 IP를 차단하고 싶었기 때문에 Application Load Balancer에서 차단하고자 하는 리소스들을 선택해서 추가한다. 3. Rule(규칙) 추가하기 - 직접 규칙을 설정하기 위해 "Add my own rules and rule group"을 선택한다. - Rule에 대한 이름을 설정하고 한국에서 발생되는 IP가..

# 배경 서버를 운영하는데 CPU가 올라가거나 request 수가 크지 않았음에도 서버가 timeout이 나서 다운이 되는 일이 발생했다. 어떠한 부분에서 문제가 있는지 알아보기 위해서 Slow Query 모니터링이 필요하다. # RDS Slow Query 설정하기 1. 파라미터 그룹 열기 사용 중인 파라미터 그룹에 접근한다. 2. 파라미터 편집 파라미터 편집 > slow_query_log 검색 slow_query_log의 기본값은 0 또는 없음이다. 로깅을 하기 위해서는 값을 1로 지정하고 저장한다. general_log도 똑같이 설정한다. long_query_time : 몇초 이상 걸리는 query를 로깅할 것 인지 3. 로깅 된 값 조회하기 - 파라미터 그룹에 log_output을 검색하면 다음과 ..

# 문제 https://www.acmicpc.net/problem/11021 11021번: A+B - 7 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. www.acmicpc.net # 입력 예제 5 1 1 2 3 3 4 9 8 5 2 # 출력 예제 Case #1: 2 Case #2: 5 Case #3: 7 Case #4: 17 Case #5: 7 # 코드 package main import "fmt" func main() { var a, b, c int fmt.Scan(&a) var sum []int for i := 0; i < a; i++ { fmt.Scanln(&b, &c) sum = append(sum, b+c) } for i ..

Nginx를 통해 설정한 주소에 SSL 설정하기 위해서 무료로 SSL을 사용할 수 있는 프로그램인 certbot을 사용한다. https://certbot.eff.org/ Certbot Tagline certbot.eff.org # SSL 설정 1. snapd 설치 $ sudo apt-get update && sudo apt-get install snapd $ sudo snap install core; sudo snap refresh core //최신버전인지 확인 2. Certbot 설치 $ sudo snap install --classic certbot 3. Certbot 명령어 실행을 위한 설정 $ sudo ln -s /snap/bin/certbot /usr/bin/certbot 4. Nginx 설정 ..

# 문제 Docker 관련 환경변수를 변경하고 docker를 재시작하는 과정에서 다음과 같은 에러가 발생 $ sudo systemctl restart docker >> Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. 이후에 docker 컨테이너 상태를 확인해보려고 했는데 이 또한 다음과 같은 에러를 반환했다 $ sudo docker ps -a >> Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the ..