전체 글

Jisung Jung의 기술블로그
DevOps

[Github] Github Actions을 이용한 EC2 CI/CD 파이프라인 구축

amazon EC2 + Docker 설치하기 목표 AWS EC2 Instance를 생성하고 사용하는 방법 알아보기 EC2 SSH를 이용해 Instance에 Docker 설치하기 AWS EC2란 EC2(Elastic Compute Colude) EC2는 AWS에서 제공하는 클라우드 컴퓨팅 솔루션으로 AWS region에 존재 zzzzseong.tistory.com 해당 글은 위 포스트와 이어지는 글입니다. EC2 Instance 생성 과정과 Docker 설치 방법을 보려면 위 포스트를 참고해주세요 Spring 프로젝트에 Dockerfile 추가하기 Docker Image 생성을 위해 Spring 프로젝트 root 경로에 Dockerfile을 생성한 후 Github repository에 push한다. 본인은..

Backend, Spring

[JPA] Proxy

목표 Jpa Proxy가 무엇인지에 대해 이해한다. 어떤 상황에서 Proxy를 사용해야하는지 이해한다. Jpa Proxy란? Proxy Proxy는 데이터베이스 조회를 미루는, Hibernate가 만든 실제 객체를 상속받아 만들어지는 가짜 객체이다. Proxy 객체는 target이라는 이름의 변수로 실제 객체의 참조를 보관하는데 Proxy 객체를 호출하면 Proxy객체는 실제 객체의 메소드를 호출한다. DB에서 정보를 조회하고 실제 객체를 가져올때 em.find()를 사용하는 것처럼. Proxy 객체를 가져오고 싶을때는 em.getReference()를 사용해 Proxy객체를 가져올 수 있다. 그렇다면, Proxy객체의 동작 원리는 어떻게 되는 것일까? Proxy객체를 생성하고 데이터를 읽으려 하면 그때..

Java

[Java] Garbage Collector

목표 Java의 가장 널리 알려진 장점은 "JVM을 통해 모든 OS에서 동작한다"는 것이지만 "Java는 OS로부터 할당받은 메모리를 자동으로 관리한다"는 매우 큰 장점 또한 존재한다. Java에서 메모리를 자동으로 관리하는 관리자는 누구이며 어떤 방식으로 관리하는 것인지 알아보자. Java 메모리 관리자 GC(Garbage Collector) GC(Garbage Collector) Java GC는 JVM의 Execution Engine 내부에 존재하는데, OS로부터 할당 받은 메모리 영역(JVM Memory)을 자동으로 관리하는 기능이다. GC는 동적으로 할당된 메모리 영역(Heap)에서 더 이상 사용되지않는 객체를 식별하고 제거하여 메모리를 회수한다. 이를 통해 명시적으로 메모리 관리를 수행하지 않아..

Java

[Java] SE/JRE/JDK

Java SE, JDK, JRE ✅ Java SE(Java Standard Edition) Java SE는 Java에서 가장 기본이 되는 자바의 표준안이며 Java가 어떠한 문법적인 구성을 가지고 있는지, 어떠한 라이브러리들을 제공하는지 등을 정의하고 있다. Java SE이 이외의 Edition으로는 Java EE(Enterprise Edition), ME(Micro Edition)등이 있다. Java SE는 실제 소프트웨어가 아니며 실제 Java 소프트웨어를 개발하는데 필요한 설계도라고 생각하면 될 것이다. 아래는 Oracle에서 공개하는 Java SE의 공식문서 링크이니 궁금하면 들어가서 한번 보면 좋을 것 같다. 현재는 Java SE 20버전까지 올라와 있다. Java Platform, Sta..

Backend, Spring

[Spring] Redis 사용하기(1)

목표 Redis가 무엇이고 언제 사용하는 것인지 알아보자 Docker로 Redis를 실행해보자 Redis란 무엇이고 언제, 어떻게 사용하는것일까? Redis(Remote Dictionary Server) Redis는 오픈소스기반 NoSQL의 Key-Value Store, In-Memory Database이며 속도와 확장성, 대량 데이터 처리 능력을 제공한다. 여기서 Key-Value Store란 메모리를 기반으로 데이터를 빠르게 읽어올 수 있는 저장소를 의미하며 Disk를 기반으로 하는 RDBMS보다 Read가 빠르다. 💡Key-Value 형태는 HashMap과 유사해 보이는데, 그냥 HashMap을 사용하면 되는거 아닌가? 서버가 1대 있다는 가정에서는 Redis의 장점이 크게 보이지 않지만, 분산환..

Java

[Java] Java코드가 실행되기까지

목표 자바 기초를 다시 공부하면서 문득 내가 작성한 자바 코드가 어떻게 동작하는지 알고싶어졌다. 이번 글을 정리하면서 자바 코드가 바이트코드로 변환되는 과정과 JVM에서 바이트코드를 기계어로 바꾸는 과정을 완벽하게 이해하고자 한다. Java 코드가 바이트코드로 변환되는 과정 Java는 사람이 읽기 쉬운 High-Level Language이기 때문에 기계가 읽을 수 없다. 따라서, 0과1로 이루어진 이진수의 코드로 변환해줘야하는데 그 과정을 간단하게 표현하자면 아래와 같다. 우리가 작성한 소스파일(.java)이 JDK의 java compiler를 통해 바이트코드파일(.class)로 변환되고 JRE의 JVM이 이를 OS가 이해할 수 있는 기계어로 변환한다. 좀 더 자세하게 들여다 보자. 우선, 소스코드를 기..

DevOps

[AWS] AWS S3

목표 amazon S3를 사용하는 방법에 대해 알아보자 Spring Boot에 S3를 연결해 보자 S3 Bucket 생성하기 amazon S3(amazon Simple Storage Service) S3는 amazon에서 제공하는 클라우드 스토리지 시스템이다. S3에서는 obejct와 bucket을 통해 서비스를 제공하는데 그 정의는 아래와 같다. object: 우리가 저장할 파일 bucket: 저장할 파일을 담을 root directory 폴더 이제 bucket을 생성해보자. AWS 로그인 AWS management console -> service -> storage -> s3 선택 버킷 만들기 선택 버킷 이름을 작성하고 AWS 리전은 본인과 가장 가까운 곳으로 지정해준다. AWS 리전은 실제 스토리..

DevOps

[AWS] AWS RDS

목표 amazon RDS를 사용하는 방법에 대해 알아보자. Spring Boot와 RDS를 연결해 사용하는 방법에 대해 알아보자. amazon RDS에 DB 생성하기 amazon RDS(amazon Relational Database Service) amazon에서 제공하는 DB호스팅 서비스이다. RDS 생성 AWS 로그인 AWS management console -> service -> database -> rds 접속 카테고리에서 database 선택 create database 선택 후 DB생성 Amazon RDS DB 인스턴스 생성 https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html DB를 생..

Jisung Jung
Jisung Jung의 기술블로그