분류 전체보기 475

Jenkins → GitHub Action 이전기 (GitHub Action으로 AWS CICD 구축 하기, AWS Code Deploy)

이번글은 GitAction 의 사용 방법에 대한 기록입니다. 서두현재 사이드 프로젝트의 CI/CD 프로세서 구조는 Jenkins 를 활용하고있습니다.GItHub Merge → Jenkins (Main Branch Build & Jar file deploy) → ec2 shell script 실행 의 구조인데Jenkins 를 사용하면 몆가지 불편한 점이 생겨 Git Action을 사용하는 방안으로 변경해보고자 합니다. 불편했던 점EC2 프리티어가 끝나고, test 코드가 많아지면서 빌드시간과 용량이 커져 비용이 늘어가는게 보인다.Jenkins 서버가 메모리 과부하로 종료되는 경우가 발생해 복구하는게 번거롭다Jenkins 자체적으로 Job의 다양한 구성방식이 존재해 여러 Job 의 관리가 번거롭다고 느껴진다..

Infra/CI, CD 2024.02.21

개발자의 다이어그램 익숙해지기

3주만에 쓰는 글입니다 ㅎㅎ요즘 글쓰는게 조금씩 부담감이 커져, 점점 안쓰게되는데.. 다시 가벼운 마음으로 가볍게 가볍게 포스팅을 이어나가볼까 합니당  최근 스터디로 [육각형 개발자 - 최범균] 책을 읽고있는데, 코드 이해를 위한 도구 중 하나로 "다이어그램"이 나와 이에 대해 스터디 팀원들과 이야기를 해보았습니다.책의 요지는 다음과 같았습니다.서비스는 사회 환경의 변화에 맞춰 함께 변화되어야한다.그러기위해서는 코드비용(코드를 변경하는데 드는 인건비)이 적어야한다.개발자가 코드를 변경할때는 [(1)코드 이해], [(2) 코드 수정] 이 2가지 단계를 거친다.이 중 "코드를 이해하는 시간"을 줄이기 위해서는 2가지 역량이 요구된다.코드를 제대로 이해할 수 있는 역량이해하기 쉬운 코드를 작성하는 역량이 중 ..

[Spring] FCM 푸시 알림 연동하기 (AOS, IOS)

오늘은 현재 진행중인 '채팅 서비스' 사이드 프로젝트에 적용할 목적으로 💡 Spring 기반의 Server 에서 푸시알림을 전송하는 방법에 대해 공부해보고자 합니다. 우리가 흔히 아는 어플리케이션 Push 기능을 쉽게 구현하기 위해서 시중에 나와있는 서드파티 솔루션들을 이용할 수 있는데 가볍게 찾아보았을때 가장 많이 나오는 솔루션을 2가지로 추릴 수 있었습니다. Amozon SNS (Simple Notification Service) FCM (Firebase Cloud Messaging) 위의 2가지 솔루션 모두 믿음직스러운(?) 대기업에서 제공하는 기술이지만 FCM 이 조금 더 적용하기 쉬워보였고 (공식문서가 잘나와있음) 또, '무.료.' 라는 점 (아마존은 알림 1백만 개당 0.50 USD) 안드로이..

Spring/Spring Boot 2024.01.07

[Docker] 컨테이너 내부 데이터 영속적으로 관리하기 (Docker volume, mount)

Docker 에서 생성되는 데이터를 영속적으로 관리하기 위한 효과적인 방법으로 볼륨과 마운트가 있습니다. 도커에서 제공하는 이 2가지 기능을 이요하여 로컬(Host)의 폴더와 컨테이너의 내부 폴더를 동기화 시킬 수 있습니다. Docker Volume Docker Bind Mount 이번 포스팅에서는 이 2가지 기능에 대해 정리해보고자 합니다. [목차] Docker Container 내부에서 Data 저장 과정 Docker 의 영속적 데이터 저장 방법 1) Volumes (1) 익명 볼륨 - Anonymous Volumes (2) 이름이 있는 볼륨 (명명된 볼륨) - Named Volumes (3)❗️ Volume의 메모리 저장 위치 (Mount Point) 2) Docker Bind Mount - 바인드..

Docker 이미지 & 컨테이너 이해하고 사용하기

[Infra/Docker(도커)] - Docker - 도커란 이전 글에서 Docker의 개념에대해 살짝 정리해보았습니다. 이번 글에서는 Docker 실질적으로 사용하기위한 개념인 컨테이너와, 이미지에 대해 학습 정리를 하고자 합니다. [목차] Docker Images, Container 차이점 Contanier 이미지 사용하기 (이미지 만들기) 외부 빌드된 이미지 - Docker Hub 이미지 가져오기 커스텀화된 이미지 - DockerFile 로 이미지 빌드하기 도커 이미지 레이어 이해하기 도커 이미지 지우기 Docker hub 에 커스텀 이미지 올리기 Docker 로 EC2에 배포하기 1. Images vs Containers Docker 환경에서의 이미지와 컨테이너의 차이점 > 도커는 컨테이너 격리 ..

Docker - 도커란

도커란 도커(Docker)는 컨테이너 가상화 기술 중 제일 잘나가는(?) 기술입니다. 도커는 프로세스 격리 기술들을 사용해 컨테이너를 생성하고 관리하기 위한 도구입니다. 쉽게 말하면, 한 컴퓨터(물리적 자원)안에서 여러개의 시스템과 환결설정들을 충돌하지 않고 동시에 사용할 수 있도록 격리시켜서 실행하는 프로그램입니다. 도커는 별도의 개별적인 개발환경을 구성할 수 있는 컨테이너를 구축하고 관리할 수 있는 도구이며 컨테이너는, 공유되거나 재생성 복사 혹은 그자체로의 배포까지 가능한 상당히 편리한 개발도구로써 사용할 수 있습니다. (내가 원하는대로 구성하고 빌려주고, 사용할 수 있는 피크닉 박스와 유사 개념) 도커의 구조 다시 이해하자면, 도커는 컨테이너를 관리하는 플랫폼 도구입니다. 컨테이너는 프로세스 격리..

[Spring] Embedded MongoDB! 통합테스트를 위한 인메모리 몽고디비 설정하기

현재 mongodb와 mysql 을 함께 사용하고있는 프로젝트에서 통합테스트를 위해 mongodb 도 h2 같은 in-memory db로 사용할 수 있는게 없을까 찾아보다가 알게된 방법에 대해 정리하는 글 입니다. 공식적으로 Spring Document 에 언급된 in memory 방식의 nosql db 를 사용할 수 있는 방버을 찾지못해 오픈소스 라이브러리를 사용하였습니다. 참고해주세요! ✔️ Spring Boot 환경에서 Embedded MongoDB 를 사용하는 3가지 방법 1) de.flapdoodle.embed.mongo.spring embeded mongodb 라고 검색하면 가장 많이 나오는 오픈소스 라이브러인 것 같습니다. 나온지 10년 가까이된 것 같고, 지금까지도 활발하게 contribu..

[회고] "간헐적 메모리 장애" 삽질부터 트러블 슈팅까지

해당 글은 사수도 동료도 있었는데 없어진 1인 주니어 백엔드 개발자의 간헐적인 서버 메모리 장애 오류 (ShutDown) 삽질 회고입니다. 개발환경 [ Linux, Docker, Java 11, Spring 2.4.x ] | 회고 안녕하십니까 여러분 🫡 제 블로그를 정기적으로 봐주시는 분이 얼마나 있을지 모르겠으나 상-당히 오랜만에 글을 쓰게 되었네요 그 동안 황금연휴로 (9.29 ~ 10. 09) 8박9일 말레이시아 여행을 다녀오기도 했고, 사내에서 잡고있던 장애 슈팅이 잘 풀리지 않아 번아웃이라는 핑계거리가 생겨버려서 이런저런 이유를 대며 개인공부를 살짝 손에서 놓았습니다 하지만 돌아왔다는건. 문제를 해결했다는 것..!!! [목차] 직면한 문제 상황 그래서 뭐가 뭐가 문제의 원인일까? ✨ 이제 어떻게..

[Linux] 리눅스 성능 분석 및 트러블 슈팅 실제사례 정리

해당 포스팅은 인프런 "리눅스 성능 분석 시작하기" 를 수강하고 정리한 글입니다 :) 리눅스 기반 os 에서 돌아가는 서버 시스템의 성능 측정 및 장애 대응에 대한 학습 내용 정리 글 입니다. [목차] nginx miss configuration 간헐적인 네트워크 응답 지연 간헐적인 커넥션 동료 에러 간헐적인 타임아웃 EC2 CPU MHz이상 동작 에러 1. nginx miss configuration nginx workers 설정 미숙으로 인한 장애 ✔️ 장애 현상 트래픽 증가와 함께 서버의 응답 지연 발생 → 응답 지연은 컴퓨팅 리소스 부족이 원인 ✔️ 트러블 슈팅 과정 1) 메트릭 수집 보통 응답지연은 컴퓨팅 리소스 자원의 부족을 원으로 보기 때문에 아래 2가지 관점에서의 메트릭 수집을 진행 cpu..

운영체제/Linux 2023.09.05

[Linux] tcpdump - 네트워크 트러블 슈팅 도구 (리눅스 패킷 수집 및 분석하기)

해당 포스팅은 인프런 "리눅스 성능 분석 시작하기" 를 수강하고 정리한 글입니다 :) 리눅스 기반 os 에서 돌아가는 서버 시스템의 성능 측정 및 장애 대응에 대한 학습 내용 정리 글 입니다. 💡 리눅스 성능 분석의 기본 명령어 명령어 역할 uptime 시스템 가동 시간, Load Average 확인 dmesg 커널 메세지 확인 (OOME 발생 여부, SYN Flooding 여부) free 메모리 사용 현황 확인 df 디스크 여유 공간 및 inode 공간 확인 top 프로세스들의 상태, CPU 사용률, 메모리 사용률 확인 netstat 네트워크 연결 정보 확인 tcpdump 네트워크 트러블 슈팅 분석을 위한 패킷 수집 명령어 📌 tcpdump 명령어 'tcpdump' 은 네트워크 패킷 수집을 위한 명령어..

운영체제/Linux 2023.09.02