
개념정리 스프링의 핵심은 무엇인가요?
2022. 6. 28. 21:17
Spring-boot
1. 스프링은 Framework 이다. (틀안에서 동작한다) - 틀에 맞춰서 개발 하라 2. 스프링은 오픈소스이다. - 소스코드 공개( 내부 뜯어 고칠 수 있다) 3. 스프링은 IoC 컨테이너를 가진다.(Inversion of Control 제어의 역전) - 주도권을 스프링이 가진다. 인스턴스의 생성 부터 소멸 까지의 인스턴스의 생명 주기 관리를 컨테이너가 대신 해준다는 것 Class >> 설계도 Object >> 실체화가 가능한 것 ( 추상적 X ) Instance >> 실체화 된 것 4. 스프링은 DI 를 지원한다. (Dependency Injection 의존성 주입) - 스프링이 관리하는 객체를 내가 원하는 어떤 클래스 메소드에서 사용 할 수 있게 끔 가져 올 수 있다. 출처 : https://ww..
Spring-boot 트랜잭션 격리 수준과 JPA의 LOCK
2022. 6. 9. 22:17
Spring-boot
코인 모의 투자 프로젝트를 경험해봤습니다. 코인 구매, 판매 api 테스트 중, 동시 요청이 들어오면 해당 유저 보유 계좌 금액 데이터에 변질 문제가 발생 하였습니다. ex) 1000원 짜리 코인을 2개 구매할 경우, 2000원 지출이 나와야 되는데, 1000원 지출만 적용 된 문제 이에 대한 해결점을 찾던 중 LOCK 을 알았고, 구현 하면서 찾아봤던 정보 기록입니다. 트랜잭션 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야할 일련의 연산들을 의미한다. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 사용자가 시스템에 대한 서비스 요구시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. ..

RDS MySQL , Spring-boot 연동하기
2022. 6. 4. 10:53
Spring-boot
프로젝트 구현 중에 MySQL을 사용하게 되었습니다. 사용하면서 찾아본 정보 기록입니다. RDS MySQL 구매 관련 내용은 지난 게시글에 있습니다. RDS 구매 및 MySQL 세팅하기 : https://jemoo1060.tistory.com/52?category=1024391 RDS 구매 MySQL 세팅하기 RDS 필요할 때 마다 까먹을꺼 같아서 기록 해둡니다. AWS 로그인후 오른쪽 상단에 본인이 구매하고자 하는 지역을 설정 합니다. (가끔 멋대로 다른 지역 접속 되어 있는 경우가 있으니 확인) RDS 검 jemoo1060.tistory.com MySQL이란? MySQL은 구조적 쿼리 언어(SQL)를 기반으로 Oracle에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 데이터베이스는 구..

Spring-boot 란?
2022. 6. 3. 09:28
Spring-boot
당연하게끔 사용하고 있던 spring-boot, 편하다는 느낌으로 쓰고는 있지만, 내가 쓰는 spring-boot도구가 왜 쓰이는 건지 궁금해서 찾아본 정보 기록합니다. Spring이란? 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다. Spring특징 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 스프링은 Plain O..

Spring-boot에서 github Action & nginx CI/CD구축하기 4
2022. 6. 1. 11:50
Spring-boot
프로젝트 중 무중단 배포 필요성을 느껴 ci/cd 구축을 해봤습니다. 여러 블로그에 리눅스, 우분투 혼용해서 설정한 정보글이 많기도 하고, java코드는 기록이 남지만 aws ubuntu , S3, codedeploy 설정은 기록이 안남아서 까먹을 까봐 찾아본 정보를 기록합니다. Nginx로 무중단 배포 구축하기 Nginx 설정 EC2 ubuntu 접속하여 nginx 설치하고 실행되고 있는지 확인합니다. sudo apt-get install nginx sudo service nginx start ps -ef | grep nginx 아래 명령어도 service-url 파일 생성합니다. sudo vim /etc/nginx/conf.d/service-url.inc service-url 안에 아래 명령어를 입력..

Spring-boot에서 github Action & nginx CI/CD구축하기 3
2022. 6. 1. 11:02
Spring-boot
프로젝트 중 무중단 배포 필요성을 느껴 ci/cd 구축을 해봤습니다. 여러 블로그에 리눅스, 우분투 혼용해서 설정한 정보글이 많기도 하고, java코드는 기록이 남지만 aws ubuntu , S3, codedeploy 설정은 기록이 안남아서 까먹을 까봐 찾아본 정보를 기록합니다. AWS EC2, AWS CodeDeploy 연동하기 EC2 IAM 역할 설정하기 ec2 구매는 지난 포스팅에 나와있습니다 https://jemoo1060.tistory.com/51?category=1024391 EC2 구매하기 [ubuntu free tier] ec2 free tier 구매할 때 마다 혹시 모를 과금을 대비하여 작성해둡니다. AWS 로그인후 오른쪽 상단에 본인이 구매하고자 하는 지역을 설정 합니다. (가끔 멋대로..

Spring-boot에서 github Action & nginx CI/CD구축하기 2
2022. 6. 1. 10:00
Spring-boot
프로젝트 중 무중단 배포 필요성을 느껴 ci/cd 구축을 해봤습니다. 여러 블로그에 리눅스, 우분투 혼용해서 설정한 정보글이 많기도 하고, java코드는 기록이 남지만 aws ubuntu , S3, codedeploy 설정은 기록이 안남아서 까먹을 까봐 찾아본 정보를 기록합니다. AWS S3 연동하기 AWS IAM(사용자) 추가하기 사용자 추가는 외부에서 접속 할 수 있는 권한을 가진 대상을 설정하는 과정입니다. IAM 검색 하시고 사용자 클릭합니다. 사용자 추가 눌러줍니다. 원하는 이름을 적고, 사용자 접속할 때 쓰일 액세스 키를 체크 하도 다음 버튼을 누릅니다. 다음 기존 정책 직접 연결 선택하시고, 뒤에서 사용하게 될 S3,CodeDeploy정책("AmazonS3FullAccess", "AWSCod..

Spring-boot에서 github Action & nginx CI/CD구축하기 1
2022. 6. 1. 09:17
Spring-boot
프로젝트 중 무중단 배포 필요성을 느껴 ci/cd 구축을 해봤습니다. 여러 블로그에 리눅스, 우분투 혼용해서 설정한 정보글이 많기도 하고, java코드는 기록이 남지만 aws ubuntu , S3, codedeploy 설정은 기록이 안남아서 까먹을 까봐 찾아본 정보를 기록합니다. Github Action CI 구축하기 repository에 들어가서 Actions 탭에 있는 Java with Gradle를 선택하여 gradle.yml 파일을 만듭니다. gradle.yml 파일을 아래와 같이 설정하고 push해보면 build 결과 테스트가 가능합니다. (지금 사용하는 ubuntu는 20.04버전) # This workflow uses actions that are not certified by GitHub...

JPA N+1문제란?
2022. 5. 27. 11:44
Spring-boot
프로젝트에서 spring-boot JPA 사용 N+1 문제가 발생해서 기록합니다. Spring JPA(ORM)의 N+1이란 ? 조회 시 1개의 쿼리를 생각하고 설계를 했으나 나오지 않아도 되는 조회의 쿼리가 N개가 더 발생하는 문제 DBMS 툴을 이용해 직접 쿼리문을 만들어 조회할 때는 물론 하나의 쿼리가 발생하겠지만 mybatis, 넘어서는 JPA가 등장함에 따라 자동화된 쿼리문들이 생겨나면서 어쩔 수 없이 발생하는 문제입니다. JPA의 경우에는 객체에 대해서 조회한다고 해도 다양한 연관관계들의 매핑에 의해서 관계가 맺어진 다른 객체가 함께 조회되는 경우에 N+1이 발생하게 됩니다. 케이스들에 대해서 아래에서 이야기하겠지만 지금 간단하게 예를 들면, 유저 한명이 쓴 게시글들을 조회할 때 유저-게시글을 ..