소통하는 개발자 Sean
article thumbnail
우당탕탕 무중단 배포 도전! (boot+Github actions+Code deploy)
DevOps/CI & CD 2023. 11. 17. 16:22

2023.11.17 - [프로젝트 일지] - Spring boot + Github actions + AWS Code deploy 자동화배포 도전! Spring boot + Github actions + AWS Code deploy 자동화배포 도전! 자동화 배포와 무중단배포를 구현하려고 하는 이유 제가 원래 배포하던 방식은 다음과 같았습니다. 인텔리제이에서 jar 파일을 빌드 한 후 FTP인 FileZilla를 사용하여 EC2에 jar 파일을 전송하고 EC2 sean-lets-go.tistory.com 처음 저의 배포방식에 대한 문제점은 다음과 같았습니다. main 브랜치에 푸쉬하고 배포를 하는 시점에 테스트가 진행되지 않는다. 개발자가 수동으로 해줘야 하는 작업들이 많다. (FTP로 jar 전송, EC2..

article thumbnail
스무스한 자동화 배포 도전! (boot+Github actions+Code deploy)
DevOps/CI & CD 2023. 11. 17. 01:13

자동화 배포와 무중단배포를 구현하려고 하는 이유 제가 원래 배포하던 방식은 다음과 같았습니다. 인텔리제이에서 jar 파일을 빌드 한 후 FTP인 FileZilla를 사용하여 EC2에 jar 파일을 전송하고 EC2에서 여러 명령어를 통해 서버를 멈췄다가, 재배포 하는 방식을 사용했었습니다. 위와 같은 방식을 처음 사용했을 때는 문제점을 많이 느끼지 못했습니다. 직관적인 방법이긴 하지만, CI/CD에 대해 공부하다보니 새로운 관점을 가지게 되었고 다시 바라본 저의 배포방식에 여러 문제점이 있다는것을 느꼈습니다. 제가 생각한 문제점은 다음과 같습니다. main 브랜치에 푸쉬하고 배포를 하는 시점에 테스트가 진행되지 않는다. 개발자가 수동으로 해줘야 하는 작업들이 많다. (FTP로 jar 전송, EC2에서의 각..

article thumbnail
상호배제 & 뮤텍스,세마포어,스핀락 개념
Knowledge 2023. 11. 7. 17:19

👉 상호배제(Mutual Exclusion) Mutual - 서로의, Exclusion - 배제 주로 병행 프로그래밍, 동시성 제어와 관련이 있으며 특정 프로세스가 공유 자원을 사용 중일 때 다른 프로세스가 이 자원에 접근하지 못하도록 막는 것을 의미합니다. 결국은 공유를 하면 안되는 자원(Resource)의 동시 사용을 피하는 방법 중 하나입니다. 이는 경쟁 조건을 방지하고 일관된 상태를 유지하는 데 중요합니다. 이를 위해 뮤텍스, 세마포어, 모니터 등의 동기화 메커니즘이 사용됩니다. 스레드의 경우, 프로세스와 달리 메모리의 Stack 영역을 제외한 부분을 다른 스레드와 공유하는데, 이 부분에서 스레드간 동시 사용을 피하고 싶을 때 주로 사용한다. 동시 접근을 막기 위해 프로그래머에 의해 구현된 코드 ..

article thumbnail
프로세스, 스레드 둘의 차이는?
Knowledge 2023. 11. 7. 16:54

프로세스와 스레드의 차이를 설명하실 수 있나요? 👉 프로세스란 프로그램 어떤 일을 수행하기 위해 만들어진 명령 모음 명령어 모음이 파일로 빌드 되어 보조 기억 장치에 저장되어 있는 정적인 상태 프로그램 실행 명령을 내리면 CPU는 보조 기억 장치에서 해당 프로그램을 꺼내 메인 메모리에 올려놓고 코드를 해석하며 작업을 시작합니다. 프로그램이 메인 메모리로 올라와 실행되고 있는 상태를 프로세스라고 합니다. 병행 처리란 작업을 조금씩 나누어 실행하면서 컴퓨터가 마치 여러 작업을 동시에 실행하는 것처럼 보이게 하는 처리 방법입니다. 햄버거를 만들 때 치킨버거, 새우버거, 치즈버거로 진행 순서를 바꾸는 것을 컨텍스트 스위칭이라고 합니다. 컴퓨터에서는 컨텍스트 스위칭이 매우 빠르게 일어나기 때문에 사람의 눈에는 마..

article thumbnail
코어와 프로세스의 관계
Knowledge 2023. 11. 7. 16:34

문득 ‘싱글코어는 하나의 프로세스만 실행하는 것일까’ 라는 궁금증에 생겼습니다. 이를 이해하기 위해서 CPU-Core, Process-Thread를 알아보겠습니다. CPU와 Core Process and Thread 👉 CPU와 Core | 프로세서(Processor)인 CPU와 코어(Core)는 1:1 혹은 1:n의 관계를 가진다. CPU (Central Processing Unut, 컴퓨터의 뇌 역할을 담당하는 하드웨어) 기억, 연산, 제어 등 컴퓨터의 논리적 사고를 담당하는 일종의 ‘뇌’역할을 담당합니다. 물리적 계산을 진행하는 ‘코어(Core)’를 연산회로 유닛으로 가지고 있습니다. Core CPU에 있어서 실제로 작업을 담당하는 주요 연산회로 입니다. ❓ CPU는 프로세서인가요 ‘프로세서’라는 ..

article thumbnail
springboot queryDSL 적용, JPQL -> queryDSL로 변경, 이유 + 성능체크
Web Programming/JPA 2023. 11. 3. 14:28

queryDSL에 대해 더 자세히 알고 싶다면, 1편을 보고오시는것을 추천드립니다! 2023.11.03 - [분류 전체보기] - queryDSL이란? 간단한 설명과 사용이유 queryDSL이란? 간단한 설명과 사용이유 👉 글을 쓰게 된 이유 저는 JPA가 복잡한 쿼리를 효율적이고 편리한 개발을 지원하지만 특히 복잡한 쿼리를 작성할 때 일부 단점이 있다고 생각했습니다. JPA는 기본적으로 단순한 CRUD 쿼리와 간 sean-lets-go.tistory.com 👉 Gradle 의존성과 세팅 plugins { id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' // Q 클래스 생성 플러그인 // ... } def querydslDir = "$buildDir/ge..