전체 글 11

도커가 필요한 이유

docker 레드헷에 따르면 "Docker(도커)"는 오픈소스 커뮤니티 프로젝트, 오픈소스 프로젝트 툴, 해당 프로젝트를 주로 지원하는 기업인 Docker Inc. 및 해당 기업이 공식 지원하는 툴을 포함해 여러 의미를 뜻합니다" Docker를 사용하면 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있습니다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있어, 애플리케이션을 클라우드에 최적화하도록 지원합니다 linux커널과의 차이 컨테이너 생성 및 구축, 이미지 전송, 이미지 버전 관리 등의 프로세스를 용이하게 한다. 도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image..

카테고리 없음 2023.11.27

웹소켓

구현하려는 기능 팔로워들의 게시물을 인스타그램의 스토리 조회 기능처럼 게시물이 업로드된 순간 사용자에게 보내주도록 한다. 스토리 기능을 구현하기 위해서는 프론트의 호출 없이도 업데이트된 내용을 보내줘야 한다. 이를 위해서 우리는 한번 연결해두면 호출을 하지 않아도 프론트로 정보를 전송할 수 있도록 웹소켓을 사용했다. 사실 찾아보면서 느낀 것인데 프론트에서 서버로 보내는 내용이 없기 때문에 단방향으로 사용하는 SSE(server-sent-event)를 사용하는게 더 적합했다고 본다. 먼저 해당 기능을 구현할 수 있는 4가지 방법에 대해 알아보겠다. Short Polling 클라이언트가 주기적으로 서버로 요청을 보내는 방법 일정 시간마다 서버에 요청을 보내 데이터가 갱신되었는지 확인하고 만약 갱신되었다면 데..

카테고리 없음 2023.11.25

AOP 개념 정리

AOP(Aspect Oriented Programming) 정의 - 여러 비즈니스모듈에서공통으로사용되는횡단관심사를중심으로설계, 개발하는 프로그래밍 기법 AOP목적 - DI는 어플리케이션객체간의결합도를낮춘다 .- AOP는 횡단 관심사와이에영향받는객체간결합도를낮춘다. AOP 장점 - 전체코드에흩어져있는관심사들이 그외공통 하나의장소로응집됨 - 기타비즈니스모듈들은본질적인처리들을위한핵심기능에대한코드만기술하고 , 관심사들은공통모듈로옮겨지므로코드가깔끔해진다. Advice 실질적으로 부가기능을 담은 구현체 Aspect 핵심기능에 부가되어 의미를 갖는 모듈 PointCut 부가기능이 적용될 대상을 선정하는 방법 JoinPoint 어드바이스가 적용될 수 있는 위치 @Pointcut("execution(* com.examp..

카테고리 없음 2023.11.20

"트랜잭션은 만능이 아니다"

트랜잭션 데이터베이스의 상태를 변화시키는 수행 작업의 단위 동시성 문제에 대해 트랜잭션을 사용하면 해결된다고 생각할 수 있지만 사실 그렇지 않다. 트랜잭션은 길수록 오버헤드가 발생하기 때문이다. jpa respository에서 제공하는 연산은 트랜잭션이 적용된다. 트랜잭션을 계속 걸면 성능과 트레이드 오프가 생기게 된다. 우리는 어느정도의 수준으로 트랜잭션을 걸지 정해야한다. 트랜잭션을 어느 범위 까지 걸 것인지 결정하는 것은 전파전략이라고한다. Spring은 @Transactional (선언적 트랜잭션)을 이용해 여러 트랜잭션을 묶어 하나의 큰 트랜잭션 경계를 만들 수 있다. 격리수준 - Read Uncommitted - Read Committed - Repeatable Read - Serializab..

카테고리 없음 2023.11.14

ORM에 대한 개념과 JPA에 대한 개념 정리 및 장단점

ORM이란? Object Relational Mapping 객체(Object)와 DB의 테이블을 Mapping 시켜 RDB 테이블을 객체지향적으로 사용하게 해주는 기술이다. 쉽게 말하자면 어플리케이션과 데이터베이스 연결 시 SQL언어가 아닌 어플리케이션 개발언어로 데이터베이스를 접근할 수 있게 해주는 툴입니다. 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용합니다. 여기서 객체 모델과 관계형 모델간에 불일치가 발생하게 되는데, ORM은 이러한 불일치를 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결합니다. JPA란? Java Persistence API JPA는 ORM 기술의 표준 명세로 자바에서 제공하는 API이다. 즉, JPA는 인터페이스고 이를 구현한..

카테고리 없음 2023.11.06

객체 지향 설계 &예제

solid srp 단일 책임 원칙 :하나의 클래스는 하나의 책임만 가져야 한다. ocp 개방-패쇄 원칙 : 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다. 새로 만드는것은 기존코드를 변경하지 않아서 괜찮고 기존 코드를 변경하는 것을 별로이다. LSP 리스코프 치환 원칙: 악셀을 밟으면 뒤로 가는 차도 만들수 있다 . 컴파일에러가 아닌 기능적인 오류 ISP 인터페이스 분리 원칙: 적당한 크기로 잘 쪼개는것 dip 의존관계 역전 원칙 : 구현체를 바라보지말고 인터페이스를 바라보라

카테고리 없음 2023.01.02