전체 글 120

JPA - 연관관계 매핑

단방향 연관관계 @Entity public class Member { ... @ManyToOne(fetch = LAZY) @JoinColumn(name="TEAM_ID") private Team team; } 음 보기 불편하니까 em.persis() 이런건 생략하겠습니다. 하지만 중요합니다! Team team = new Team("teamName"); Member member = new Member(); member.setUsername("member1"); member.setTeam(team); 위처럼 team 자체를 넣어주면 된다. 양방향 연관관계 @Entity public class Member { ... @ManyToOne(fetch = LAZY) @JoinColumn(name="TEAM_ID")..

jpa - 엔티티 매핑

객체와 테이블 매핑 @Entity - jpa가 관리한다. @Table 기본 생성자는 필수 ddl auto create - drop하고 생성 create-drop - create했다가 끝나면 drop한다. update. - 변경 부분만 반영한다. validate. - 기존 db와 비교해서 다르면 애러 none ****주의 개발 초기에는 create , update 테스트 서버는 update, validate 스테이징 운영서버는 validate 또는 None 필드와 칼럼 @Column(name ="", length = 10) - 유니크 조건을 여기다가 걸 수 있지만 이름을 줄 수 없으므로 @Table에 줌 => 보통 애플리케이션: memberId db: member_id => spring boot가 알아서 ..

spring의 dispatcher-servlet와 전체적인 흐름

dispatcher servlet 이 해당 애플리케이션으로 들어오는 모든 요청을 핸들링 해주고 공통 작업을 처리하면서 편리하게 이용이 가능하다!! ** 예전에는 모든 서블릿에 대해 URL 매핑을 web.xml에 해줬어야 한다고 한다. web.xml설정 해줬을 경우 dispatcher servlet의 경우 특징 정적 자원에 대한 요청과 애플리케이션에 대한 요청을 분리했다. /apps의 url로 접근하면 dispatcher servlet이 담당 /resourecs의 url로 접근하면 dispatcher servlet이 담당하지 않는다. spring mvc request lifecycle의 전체적인 라이프 사이클을 보겠습니다. 사용자가 웹 브라우저를 통해 요청하면 처음에 filter를 타게됨 그리고 dispa..

JPA - 기본 개념과 영속성

ORM이란 object relational mapping 즉 객체 관계 매핑이다. 자바에서 데이터베이스 관계들을 객체로 설계하고 데이터베이스에서는 관계형 데이터 베이스로 설계해서 매핑시켜줌 JPA란 java persistence API의 약자 자바 진영의 ORM 표준으로 인터페이스 모음 JPA를 구현한게 Hibernate JPA 특징 ** JPA의 모든 데이터 변경은 트랜잭션 안에서 실행되어야 합니다. 엔티티 매니저 팩토리와 엔티티 메니저의 관계 엔티티 매니저 팩토리가 앤티티 매니저들을 생성해서 db 커넥션 그리고 엔티티매니저에는 영속성컨텍스트란게 존재한다. 영속성은 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할 비영속 준영속 em.detach(member) 영속 em..

spring 기본 개념 - IOC, DI

스프링 프레임워크란? ** 애터프라이즈급 애플리케이션: 지속적인 데이터 처리와 막대한 양의 데이터 처리와 많은 사람이 한번에 데이터에 접근하는 등의 큰 규모의 환경입니다. 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크입니다. 그리고 앤터프라이즈급 애플리케이션을 개발하기 위해 모든 기능을 종합적으로 제공하는 경량화된 솔루션입니다. 1. Ioc(inversion of controll) → 제어의 역전 : 스프링이 의존성에 대한 주도권을 가짐 제어의 역전으로 객체의 의존관계에 대한 책임을 제 3자에게 위임하는 것을 IOC 라고 함 → 즉 직접적으로 의존성을 만들지 않고 외부에서 의존성을 가져오는 경우 스프링에서는 Spring Application Context 라는 컨테이너에서 컴포넌트들을 생성 및 관리..

탄력적 IP

EC2 인스턴스를 생성하여 서버를 구동시키면 ip가 나옵니다. (ec2인스턴스를 누르면 아래처럼 나옵니다.) 하지만 이 IP는 고정 IP가 아닙니다. 그래서 인스턴스를 중지하고 실행시키면 ip가 변경되어 있습니다. 중지하고 실행 할 때마다 ip가 변경되어 있으면 매우 귀찮은 일이 발생.. 그래서 탄력적 ip를 사용합니다. 하지만 사용하지 않더라도 과금이 발생 하므로 꼭 필요한 만큼만 생성하여 바로 사용할 수 있도록 해야합니다.. 생성하는 것은 쉽습니다. 탄력적 ip주소 연결을 누릅니다. 그리고 자신이 사용하는 인스턴스를 선택해주면 됩니다. 그러면 탄력적 ip가 생깁니다!! (저는 ec2인스턴스에 이미 spring boot를 실행시켰습니다.) 이렇게 탄력적ip에 들어가도 접근을 할 수가 있습니다.

aws 2021.10.17

성능 향상을 위한 인프라 구조

시스템 성능 지표 시스템 성능을 가리킬 때 응답과 처리량이라는 지표가 자주 사용된다. 응답 처리 하나당 소요 시간, 응답이 걸리는 시간 처리량 단위 시간당 처리하는 양, 초당 받아들이는 사용자 수 퍼센타일 실제 시스템에서는 단일 사용자 응답만으로는 부족하기 때문에 여러 사용자의 평균값을 이용한다. 이때 통계학에서 사용되는 퍼센타일 개념을 이용한다. 극단적으로 응답 시간이 긴 사용자는 다른 문제를 내포하고 있을 수 있기 때문에 오차라고 생각하고 평균값에 포함하지 않는다. 병목 현상 처리량을 제한하고 있는 요인 병목 지점 병목 현상이 발생하는 위치 어떻게 해결하는가? 각 서버의 처리량이나 응답 상황 로그를 취득해서 어느 서버가 병목 지점이 되고 있는지 찾아내는 것부터 시작해야 한다. 이러한 이유로 APM을 ..

RDS 의 한글설정과 timezone 설정

rds에서 console에서 timezone을 변경하려고 하면 아래와 같이 access denied가 뜰 것입니다. Access denied; you need (at least one of) the SUPER privilege(s) for this operation rds 에서 timezone이나 한글 설정은 파라미터 그룹에서 설정을 해야합니다. 일단 rds는 기본적으로 생성했다는 가정하에 글을 쓰겠습니다. 먼저 rds를 쳐서 파라미터 그룹으로 가서 원하는 이름으로 파라미터 그룹을 만들어주세요. 파라미터에 수정이 있습니다. 저걸 클릭해주세요. zone을 클릭해서 time_zone에 asia/Seoul로 해줍니다. 다음은 한글 설정을 해보겠습니다. character을 쳐서 나오는 것들을 모두 utf8로 해..

aws 2021.10.10

무정지를 위한 인프라 구조(2)

AP 서버 이중화 세션정보 이중화 기능을 사용해서 이중화 가능 *** 세션이란 일정 시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술 *** 쿠키와 세션의 차이점 쿠키 - 방문자의 정보를 방문자 컴퓨터의 메모리에 저장 세션 - 웹 서버가 세션 아이디 파일을 만들어 서비스가 돌아가고 있는 서버에 저장 오라클 웹로직 서버 세션 이중화가 안되어있다면 load balancer에서 쿠키가 있는지 확인해서 해당 서버로 보냄 → 특정서버에만 트래픽 집중됨, 서버 하나가 고장나면 재로그인이 필요 세션 정보를 작성해서 클러스터 내 다른 서버에 복제 → 장애가 나더라도 서버1에 있는 세션이 서버2에도 있어서 유지 가능 주의점 세션 정보를..

무정지를 위한 인프라 구조(1)

안정성 (고가용성) 시스템 서비스가 가능한 한 멈추지 않도록 하는 것 안정성 및 고가용성의 목표와 실현 수단 목표 실현 수단 고장 장애가 발생하지 않을 것 (MTBF, 평균 장애 지속 시간) 고장, 장애가 발생해도 복구할 수 있을 것 ———————> 컴포넌트 이중화 (MTTR, 평균 복수 시간) 고장, 장애가 발생한 것을 검출할 수 있을 것 ———————> 컴포넌트 감시 고장, 장애가 발생해도 데이터가 보호될 것 ———————> 데이터 백업 위와 같이 상용 웹 시스템에서는 미들웨어 기능이나 구조로 이중화, 감시, 백업의 세가지 수단을 구현해서 안정성 및 고가용성의 목표를 실현하고 있다. 이중화 하나의 기능을 병렬로 여러 개 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속할 수 있는 것 ..