Server management
-
[AWS] AutoScaling 설정하기Server management 2023. 3. 11. 23:09
기존에 EC2 총 세개 (server, db1, db2)로 사용하던 서버를 확장성 있는 인프라 구축을 위해 AutoScaling 설정을 진행했고 과정을 기록하고자 한다. 고려사항은 아래와 같다. auto scaling을 위해 EC2가 생성됨과 동시에 내가 원하는 docker image를 다운받아서 실행하는 설정이 필요하다. ec2의 user data 를 사용함으로써 해결했다. 2개의 port를 사용하기 때문에 이에 대한 처리가 필요하다. Load Balancer의 target group을 두개로 나누어서 해결했다. EC2 Template 생성하기 우선 Template을 생성해야 한다. 내가 이해한 Template는 EC2를 생성하기 쉽게 내가 자주 쓰는 설정을 미리 Setting해 놓고 이를 불러와서 E..
-
Onesignal 이용 시 Content-Type header 문제Server management 2022. 5. 20. 14:51
계기 server에서 app push를 위해 onesignal rest api를 사용하는데, 이 때 Header로 'Content-Type':'application/json' 으로 설정했음에도 불구하고 onesignal에서 body를 파싱하지 못해 {"errors":["app_id not found. You may be missing a Content-Type: application/json header."]} 에러가 발생했다. 당연히 동작해야하는게 동작하지 않아 매우 많은 시간을 낭비하게 되었다. 해결 처음엔 app_id가 삭제된줄 알고 onesignal 홈페이지에서 확인했으나 아니었다. 그 다음은 메세징 기능이 바뀐건가 확인하기 위해 onesignal 홈페이지 상에서 notification을 생성하니..
-
Docker container에서 외부 ip 접근 문제Server management 2022. 5. 16. 22:33
계기 AWS EC2에서 Server를 띄우고 다른 EC2 인스턴스에 private IP를 이용해 접근하는게 문제가 없었고, onesignal을 사용하기 위해 onesignal.com 도메인에 접근하는데 local 환경에서는 정상동작하고 EC2환경에서 자꾸 lookup 문제가 발생했다. 이에 대해서 바보같이 여러가지 생각을 했다. AWS 상에서 외부와 통신하기 위해서 api gateway등록 서브넷 구성이라던가 특별한 작업을 해야 하나? Docker Container가 onesignal.com을 찾는 lookup 과정에서 문제가 있나? 해결 생각해보면 1번 작업은 고민할 가치가 없었다. go mod tidy를 이용해서 package을 다운로드 할 때 당연히 외부 통신이 되기 때문이다. 근데 이걸 생각하지 ..
-
위도, 경도를 이용하여 가까운 곳 찾기Server management 2022. 5. 14. 14:26
계기 Postgresql을 이용해 특정 장소의 위도 경도를 지정하고 사용자의 위치에 따라 가까운 장소에 대한 정보를 보여주고자한다. 이 때 몇가지 방법에 대해 고민이 생기게 되었다. 방법1: 위도, 경도만을 이용하여 거리를 계산하기 위해서는 모든 data를 search해서 계산한 결과를 보고 확인을 해야하는데 data가 늘어날수록 이는 과부화가 될거라 예상된다. postgresql에서 추가 툴로 earthdistance를 다운받아 사용하면 된다. 방법2: 지역 구간을 나누어서 meta 정보로 관리하려고 했으나 이는 경계가 애매한 구간에 대해서는 관리가 어렵고 예외 처리 로직이 많이 들어가야 할 것 같았다. 방법3: 최대로 탐색할 거리를 지정하고 아래의 두가지를 계산하여 아래의 A, B를 구한 뒤 경도 범..
-
AWS ECS 설정하기Server management 2022. 5. 5. 22:49
계기 배포를 위해 AWS 관련 공부를 하던 중 EKS라는 쿠버네티스 서비스를 사용하고 싶었는데, 쿠버를 잘 알지 못한다면 ECS로 설정하는게 더 나을 것이라는 설명을 듣고 우선 ECS 로 서버 환경을 구성하려고 한다. 우선 어떤 방식으로 해야하는지 하나도 모르기 때문에 차근차근 일기처럼 적어가려고 한다. 먼저 확인해야 할 사항 우선 ECS로 자동 배포를 하고 로드 밸런싱을 하기 위해서는 몇가지 선제 조건이 필요하다. 나의 경우에는 ECS로 EC2 Instance를 선택하여 Service를 실행하고자 설정했다. IAM 설정이 필요하다. IAM 계정을 생성해야 한다. ECR (elastic container registry) 라고 docker container를 저장하기 위한 저장소 setting이 필요하다..
-
Server 부하 줄이기Server management 2022. 4. 17. 18:13
계기 기존에 개발에 급급해서 생각하지 못한 문제들이 많았다. 사내 서비스를 개발하다보니 사용량이 많지는 않고 사양이 그리 부족해 보이지도 않는데 가끔 서버에 부하가 걸리고 이에 따른 대응을 하다보니 어떻게 관리할 수 있을까 생각을 하게 되었다. 현재는 대부분이 DB에 직접적으로 접근하고 cache를 관리하지 않고 있다. 그리고 graphQL에서 resolver를 사용할 때 N+1의 문제에 대해서도 고려하지 않고 있었다. 그래서 현재 어떻게 하면 부하를 줄일 수 있을까 생각을 하다가 dataLoader와 Redis에 대해 공부를 해보기로 했다. 사용 방법에 대해서는 따로 작성할 예정이고 개념에 대해서만 알아보고자 한다. GraphQL DataLoader N+1 Promblem GraphQL Resolver..
-
동일 EC2 instance 내 접근 문제 해결Server management 2022. 1. 22. 13:03
test를 위해서 동일 instance 내에 server, db를 동시에 띄우고 접근하고자 했다. 왜인지 외부에서는 접근이 되는데 내부에서 docker들 끼리는 접근이 안되는 것 처럼 보였다. 서치를 해보니 https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-instance-addressing.html 을 보면 해결할 수 있었다. 동일 instance일 경우 public ip -> private ip 로 접근 ip를 변경해 주니 접근할 수 있었다.
-
AWS 서버 구축하기 Step -2 (amazon linux Docker 환경 구축)Server management 2022. 1. 22. 12:24
https://zzihyeon.tistory.com/34 작업을 완료 했다는 가정 하에 시작하겠다 Docker 설치 및 실행하기 ssh 접속하기 sudo yum update sudo yum install docker 이제 docker 설치가 완료되었다. docker -v 명령어를 통해 정상 설치되었는지 확인한다. docker 를 enable하고 start 한다. sudo systemctl enable docker.service sudo systemctl start docker.service 이 때 docker 명령어는 sudo 모드에서만 동작하므로 sudo usermod -aG docker ec2-user 명령어를 통해 유저에 권한을 주면 사용하기 편하다 Docker-compose 설치하기 wget ht..