커널 360 백엔드 심화 캠프커널 360 부트캠프를 시작하고 기업 프로젝트 2주차가 지나갔다.시간이 너무 후딱간다.사실 회고도 매주 쓰려고 했는데 결국 1달만에 첫 회고를 쓰게 된다.1 ~ 2 주차첫 2주는 딱히 뭐 하는 게 없다.사실 시키는 게 없다는 거지 할 건 진짜 많다.커널360은 강사가 없다.대신 패스트캠퍼스의 모든 강의를 들을 수 있다.패스트 캠퍼스의 강의들을 들으며 기초적인 스프링 부트 CRUD 기능 구현과 여러 기능들에 대해 학습한다.이때가 생각보다 엄청 지루했다.물론 나름 모르던 걸 배워서 재밌긴 했는데2주 내내 하루 종일 강의만 들으려니 좀 지루했다. 3주차3주차 1 ~3일3주차의 1 ~ 3일은 해커톤이 진행되었다.얼떨결에 팀장을 맡아 해커톤을 이끌게 되었다.사실 원래 하려고 정했던 주..
젠킨스 서버가 안돌아간다어느 순간부터 갑자기 젠킨스 빌드가 되지 않는다.사실 알아차린 것도 2일이 지나서야 알아차렸다.이래서 다들 젠킨스 관련 알림을 구현해놓은 걸까? 젠킨스 서버에 접속해보니서버 콘솔에 접속은 가능하지만 빌드가 진행되고 있지 않았다.원인를 찾기 위한 가설 1. 젠킨스 빌드가 총 60개 이상이 돌아가서 젠킨스 파일이 너무 많이 생겼다 -> 용량 부족2. t2.micro로 젠킨스를 돌리기엔 무리였다. -> 서버 인스턴스 업그레이드(사실상 서버 이전..)3. 젠킨스 파일에 문제가 발생했다. -> 젠킨스 빌드 로그 확인하여 원인 해결 원인 분석일단 젠킨스 콘솔에 접속해 막 뒤져보던 중이런 경고문을 보았다.디스크 공간이 571 MB 밖에 남지 않았다니..정말 젠킨스 빌드가 너무 많이 일어나서 ..
Jenkins를 이용한 CI/CD 파이프라인 구축 과정과 트러블슈팅EC2 인스턴스에서 Jenkins를 이용한 CI/CD 파이프라인을 구축하는 과정에서 겪었던 문제들과 해결 방법에 대해 공유하고자 한다.🚀 접근 방법과 목표구축하고자 했던 CI/CD 파이프라인은 다음 단계로 구성되어 있다Build & Test: 코드를 빌드하고 테스트Docker Image Build & Push: ARM64 아키텍처용 Docker 이미지를 빌드하고 Docker Hub에 푸시Deploy: 빌드된 이미지를 실제 서버에 배포이러한 파이프라인을 구축하기 위해 Jenkins를 선택했고, 초기에는 Docker 컨테이너로 Jenkins를 실행하는 방식을 선택🔧 트러블슈팅 여정1. Docker 컨테이너로 Jenkins 실행처음에는 Do..
JVM 메모리 구조와 운영체제의 가상 메모리 차이 및 JVM이 독립적인 메모리를 가지는 이유java에 대해 공부하던 중 JVM 메모리 구조와 가상 메모리 구조와의 연관성에 대해 의문이 들게 되었따.이에 대해 gpt 선생님께 물어본 내용을 적어두고자 한다.1. 운영체제의 가상 메모리 구조프로그램이 실행될 때, 운영체제(OS)는 해당 프로그램을 프로세스로 로드하고, 이를 위해 가상 메모리(Virtual Memory) 를 할당합니다. 운영체제에서 각 프로세스가 사용하는 메모리는 일반적으로 다음과 같이 구분됩니다.📌 운영체제의 가상 메모리 구조 (프로세스 단위)메모리 영역 설명코드(Code) 영역실행할 프로그램의 기계어(바이너리 코드) 저장데이터(Data) 영역전역 변수, 정적 변수 저장힙(Heap) 영역동적..
개발자로서 흔히 겪는 문제 중 하나는 "내 컴퓨터에서는 잘 작동했는데..."라는 말을 하게 되는 상황입니다. 이러한 문제는 개발 환경과 실제 서비스가 운영되는 서버 환경 간의 차이에서 비롯됩니다. 이 글에서는 개발 환경과 서버 환경의 아키텍처를 일치시켜야 하는 중요성을 스프링 부트 프로젝트를 중심으로 살펴보겠습니다.1. 환경 불일치가 야기하는 문제점1.1 버그 발견의 지연개발 환경과 서버 환경이 다르면, 개발 단계에서 발견되지 않은 버그가 배포 후에야 드러날 수 있습니다. 예를 들어, 개발자의 로컬 환경에서는 H2 인메모리 데이터베이스를 사용하지만 프로덕션에서는 MySQL을 사용한다면, SQL 방언 차이로 인한 문제가 발생할 수 있습니다.// 개발 환경(H2)에서는 작동하지만 프로덕션(MySQL)에서는 ..