본문 바로가기

Devops21

AWS ECS + Fargate 를 이용해 애플리케이션 배포하기 현재 저희 백엔드 팀 신규 프로젝트의 인프라는 AWS ECS + fargate 으로 운영되고 있습니다. 저희 팀의 데브옵스 성격의 작업을 대부분 담당하는 입장에서 팀원 모두가 기본적인 인프라 구성을 이해해야 하고, 신규 서버 생성시 배포환경을 구성하는 과정을 정리할 필요성이 있다고 느껴 해당 글을 작성합니다. 왜 ECS + Fargate 인가? ECS를 선택한 이유는 여러가지 있습니다. 별도의 인스턴스 설정을 AWS 웹 또는 CLI에서 편리하게 설정할 수 있습니다. 데브옵스를 담당하는 팀(개발자) 인력이 별도로 존재하지 않을 때, ECS에 대한 이해도만 어느정도 있다면 서비스 운영을 할 수 있습니다. 기존 운영되고 있던 두개 서비스 모두 EC2 인스턴스 또는 마이그레이션 되지 않은 IDC 서버에서 운영되.. 2024. 1. 1.
AWS EC2 서버에 Nginx 설치하기 AWS EC2 서버에 Nginx 설치하기 지금까지 수십번 새 서버를 구축하면서 Nginx를 설치하는 과정을 매번 검색하는게 번거로워 정리합니다. Nginx 설치 및 설정 yum update 패키지매니저를 업데이트 합니다. yum info nginx nginx 패키지 정보를 체크합니다. (여기서 없다고 나오는게 정상입니다.) sudo vi /etc/yum.repos.d/nginx.repo nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 yum에서 조회하는 레포에 nginx레포를 추가합니다. sudo yum install nginx -y nginx를 설치합니다... 2023. 11. 5.
AWS EC2 서버에 Docker 설치하기 AWS EC2 서버에 Docker 설치하기 지금까지 수십번 새 서버를 구축하면서 도커를 설치하는 과정을 매번 검색하는게 번거로워 정리합니다. Docker & DockerCompose 설치 및 설정 sudo yum install docker -y yum 명령어를 이용해 Docker을 설치합니다. -y: Docker을 설치하면서 나타나는 모든 yn 선택에 대해 y를 입력하게 합니다. sudo usermod -aG docker ec2-user ec2-user 사용자를 docker 그룹에 추가합니다. sudo: 사용자가 속한 그룹을 수정하기 위해 root 권한으로 명령어를 실행합니다. usermod: 특정 사용자에 대한 시스템 구성을 수정합니다. -a: === --append, 사용자가 속한 그룹 목록에 그룹을.. 2023. 11. 5.
[Kubernetes] 쿠버네티스 오브젝트 (Service, Volume, ConfigMap) 쿠버네티스 오브젝트 (Service, Volume, ConfigMap) 지난 포스팅에 이어 쿠버네티스의 오브젝트에 대하여 알아보겠습니다. Service Pod은 IP를 가지고, 다른 Pod과 통신할 수 있습니다. 하지만 Pod은 쉽게 삭제되고, 생성될 수 있기 때문에 쿠버네티스는 고정된 IP를 가진 서비스를 만들고 서비스를 통해 Pod에 접근합니다. Service(ClusterIP) 만들기 ClusterIP는 클러스터 내부에 새 IP를 할당하고, 여러 Pod을 바라보는 로드밸런서 기능을 제공합니다. 그리고 서비스 이름을 내부 도메인 서버에 등록하고 Pod간 서비스 이름으로 통신할 수 있습니다. apiVersion: apps/v1 kind: Deployment metadata: name: redis spe.. 2022. 8. 30.
[Kubernetes] 쿠버네티스 오브젝트(Pod, ReplicaSet, Deployment) 쿠버네티스 오브젝트 Pod, ReplicaSet, Deployment 이전에 쿠버네티스를 구성하고있는 master을 정리해보았습니다. 이번에는 쿠버네티스를 이용하며 사용하는 오브젝트를 정리해보려 합니다. Pod Pod은 쿠버네티스에서 관리하는 가장 작은 배포단위 입니다. 도커에서는 컨테이너를 관리하지만, 쿠버네티스의 Pod은 하나의 컨테이너 또는 여러 개의 컨테이너를 관리합니다. Pod 생성 예시 # pod run kubectl run echo --image ghcr.io/subicura/echo:v1 # 실행된 pod 확인 kubectl get pod 위와 같이 run 또는 apply 명령어로 pod을 생성할 수 있고, kubectl get pod 명령어로 현재 쿠버네티스에서 관리하는 pod 리스트를 .. 2022. 8. 29.
[Kubernetes] 쿠버네티스 간단 개념 정리 쿠버네티스 간단 개념 정리 많은 기업에서 쿠버네티스를 이용해 서비스를 운영하고 있습니다. 따라서 도커만 사용하는 것이 아닌 쿠버네티스를 사용하기 위해 학습한 내용을 정리하고자 합니다. 먼저 도커 도커, 컨테이너는 다음과 같은 이유로 사랑받고 있습니다. 가상머신에 비해 컨테이너 생성이 쉽고, 효율적이다. 컨테이너 이미지를 이용한 배포와 롤백이 간단하다. 언어나 프레임워크에 상관 없이 애플리케이션을 동일한 방식으로 관리한다. 등… 위처럼 다양한 이유로 도커를 많은 사람들이 사용했는데, 이 과정에서 동일한 앱을 여러 서버에 띄워 사용하는 경우, 관리하는 과정에서 불편함이 생겼습니다. 떄문에 문제를 해결하기 위해 컨테이너를 관리하기 위한 도우 Container Orchestration이 탄생했습니다. Conta.. 2022. 8. 29.
[Kafka] docker를 이용해 kafka 환경 구축하기 docker를 이용해 kafka 환경 구축하기 kafka 실습 환경을 구축하면서 docker을 이용하기로 결정했습니다. 이유라 함은 처음 사용해보는 kafka이기에 설치 중 어떠한 오류가 발생할 지 모르기 때문이며, 역시나 여러 오류를 접하면서 docker을 이용하길 잘했다는 생각을 했습니다. zookeeper, kafka image pull 제 클라우드는 arm ubuntu 22.04버전을 사용하고 있습니다. 때문에 zookeeper docker image는 흔히 사용중인 wurstmeister/zookeeper를 이용하지 않았고, 각자 환경에 맞추어 이미지를 받으시면 될 것 같습니다. docker pull arm64v8/zookeeper docker pull wurstmeister/kafka dock.. 2022. 8. 16.
[Kafka] kafka의 console 명령어 Kafka의 console 명령어 kafka를 이용하면서 콘솔에 접근하여 명령어를 내려야 하는 경우 지금까지 자주 사용하던 명령어를 정리하고자 합니다. topic 생성하기 ./kafka-topics.sh --create --bootstrap-server [ip:port] --replication-factor [replication] --partitions [partitions] --topic [topicName] topic을 생성합니다. --bootstrap-server: 카프카 서버의 주소를 입력합니다. --replication-factor: replication의 수를 입력합니다. --partitions: 해당 토픽의 partition 수를 입력합니다. --topic: 해당 토픽의 이름을 지정합니다... 2022. 8. 16.
[Kafka] kafka에 대해 알아보자 - 2 kafka에 대해 알아보자 Partitioner(파티셔너)란? producer가 데이터를 보내면 partitioner를 통해서 브로커로 데이터가 전송됩니다. 파티셔너는 데이터를 토픽의 어떤 파티션에 넣을 지 결정하는 역할을 합니다. 레코드에 포함된 메시지 키 또는 메시지 값에 따라서 파티션의 위치를 결정하는 역할을 합니다. 파티셔너는 메시지 키가 있을 때와 없을 때 다르게 동작하게 됩니다. 만약, 파티셔너를 따로 설정하지 않았다면 UniformStickyPartitioner로 설정됩니다. 메시지 키가 있을 때 메시지 키를 가진 레코드는 파티셔너에 의해서 특정한 해쉬값이 생성됩니다. 이 해쉬값을 기준으로 어떤 파티션에 저장될 지 결정됩니다. 토픽에 파티션이 두개가 있는 경우 동일한 키를 가진 레코드는 동일.. 2022. 8. 15.