본문 바로가기

전체 글205

WOOWACON(우아콘) 2023 후기 - 1 2023년 11월 15일 수요일 woowacon 2023이 진행되었습니다. 좋은 기회로 현장참여를 할 수 있었고, 자세한 내용은 곧 오픈될 영상으로 확인할 수 있으니 메인으로 들었던 백엔드 세션에 주관적인 후기를 기록하려 합니다. 대규모 트랜잭션을 처리하는 배민 주문시스템 규모에 따른 진화 푸드주문서버개발팀 강홍구님 첫 세션은 푸드주문서버개탈팀의 강홍구님이 진행하셨습니다. 주문시스템은 가게, 메뉴, 주문, 결제, 배달 등 수많은 시스템과 통신하고 있고, 일평균 3000만건의 주문건을 저장하고, 수년간의 데이터를 보관하고 관리한다고 합니다. 대규모 트랜잭션 속에서 데이터의 정합성 보장, 조회성능을 위해 고민했고 그 과정 속에서 선택한 아키텍쳐를 소개해주셨습니다. 하나의 시스템 장애가 전체 시스템 장애로 퍼.. 2023. 11. 17.
ELK 스택을 사용해 Springboot 로그 수집하기 ELK 스택을 사용해 Springboot 로그 수집하기 분산환경을 사용해 서버를 운영하고 있다면, 몇 개 또는 수십개의 서버의 로그를 한번에 보기 힘든 상황이 나타납니다. 예를 들면 터미널을 여러 개로 분할해서 각 서버에 접속 후 로그를 찾는다거나… (제가 그러고 있었죠…) 물론, cloudWatch와 같이 서버의 console에 출력되는 로그의 내용을 한번에 조회할 수 있지만, 이것 또한 불편함이 굉장히 많습니다. 이런 불편함을 해결하고자 미루고 미루던 분산된 Springboot 로그를 ELK스택을 이용해 수집하고, 조회해보고자 합니다. ELK 구축 각각의 서비스의 로그를 수집하는 방법에는 여러가지 방법이 있습니다. 그중 Logstash로 로그를 수집해 ElasticSearch 에 전달, Kibana를.. 2023. 11. 5.
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.
mobile obsidian-git 연동하기 mobile obsidian-git 연동하기 모바일(ANDROID & IOS) 에서는 local git을 사용하지 못한다. obsidian-git에 내장되어있는 isomorphic-git 을 이용해 연동해보자. ==이미 Github에 Obisidan repository가 있다는 가정 하에 진행한다.== 사전 작업 주의 1 Obsidian 내에 이미지 또는 음성(녹음)파일이 있을 경우 용량이 너무 커집니다… 이 때에는 imgur plugin을 이용해 이미지를 서버에 올려놓고 링크로 사용하는 대안이 있습니다. 주의2 repository vault root에 .gitignore을 꼭 만들어야 합니다. 만들지 않고 모바일 PC 아이패드 등 과 같은 여러 기기간 연동시 workspace(tab open정보 등)에.. 2023. 7. 26.
빅오(Big-O) 표기법 빅오(Big-O) 표기법 알고리즘 공부와 시간 복잡도를 판단할 때에 흔히 쓰는 단위?는 빅오 표기법입니다.. 따라서 빅오 표기법에 대해 정리하려 합니다. 빅오 표기법 빅오 표기법은 알고리즘의 효율성(시간복잡도)를 표기해주는 표기법입니다. 데이터의 개수가 n개라 할 때, 해당 알고리즘의 시간 복잡도의 최댓값을 표기합니다. 예를 들어 n^2 + 2n + 3의 연산을 하는 알고리즘의 시간 복잡도를 빅오 표기법으로 따진다면 O(n^2)으로 상수와 영향력이 적은 항을 제외하고 나타낼 수 있습니다. 빅오표기법 시간복잡도 순서 빅오 표기법의 시간복잡도는 다음과 같은 순서로 나열할 수 있습니다. O(2^n) > O(n^2) > O(n log n) > O(n) > O(log n) > O(1) 대표적인 빅오 표기법에 따른.. 2022. 9. 4.
[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.