반응형

전체 글 226

[Cloud] Docker 란? 가상머신과의 차이

Docker란? 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 조금 자세히 표현하자면, Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이라고 한다. 도커는 컨테이너라는 단위를 사용하여 패키징(컨테이너로 추상화하고 인터페이스를 제공)하며, 이 컨테이너에는 도구, 런타임 , 라이브러리등 어떠한 소프트웨어를 실행하는데 필요한 재료를 포함하고 있다. 이때의 이 재료들을 패키징 해놓은것을 도커 이미지 라고 한다. 그래서 도커의 컨테이너에 소프트웨어를 실행하는데 필요한 재료(이미지)들을 넣어두고, 해당 컨테이너를 통해 시스템 환경에 구애받지 않고 앱을 배포 및 확장하고 실행할 수 있게된다. 쉽게 표현하면 방을 나눠두고 해당 방은 앱 1번을 실행 시키는 환경을 조성해놓고 그 방..

[Knowledge] 웹호스팅 / 서버호스팅 / 클라우드 차이점

오늘은 웹호스팅 / 서버 호스팅 / 클라우드를 각각 비교하여 정리해 두려고한다. 공부한 내용은 글로 남겨야 잘 기억난다는점...! 1. 웹 호스팅 웹호스팅은 호스팅 업체의 서버중 일부의 서버를 임대하여 사용하는 방식이다. 1-1). 장점 호스팅 업체에서 빌려쓰는 개념이기 때문에 서버 및 인프라 구축이 필요없다. 가격이 저렴하다. 1-2). 단점 단독 서버를 쓰는것이 아니기때문에 서버 자원 사용량이 제한된다. 호스팅 업체에서 관리하기 때문에 서버 관리의 권한이 없다. 1-3). 주 사용처 홈페이지, 커뮤니티 사이트, 블로그 등 작은 규모로 퍼블릭하게 사용할때 자주 사용된다. 2. 서버 호스팅 서버 호스팅은 호스팅 업체의 물리적인 서버를 단독으로 임대 및 구매하여 사용한다. 따라 서버운영에 필요한 인프라와 ..

[Cloud] Public Cloud / Private Cloud란? 이해

1. Public Cloud 퍼블릭 클라우드란? 클라우드 컴퓨팅 배포의 가장 일반적인 유형 클라우드 리소스(예: 서버 및 스토리지)는 타사 클라우드 서비스 공급자가 소유하고 운영하며 인터넷을 통해 제공한다. 모든 하드웨어, 소프트웨어 및 기타 지원 인프라를 클라우드 공급자가 소유하고 관리한다. 퍼블릭 클라우드에서는 다른 조직 또는 클라우드 하드웨어, 스토리지 및 네트워크 디바이스를 공유하며 웹 브라우저를 사용하여 서비스에 액세스하고 계정을 관리하도록 되어있다. 공용 클라우드 배포는 웹 기반 메일, 온라인 사무실 애플리케이션, 스토리지 및 테스트 및 개발 환경을 제공하는 데 자주 사용된다. 예 : Azure , AWS, GCP Public Cloud 장점 비용 절감 - 하드웨어 또는 소프트웨어를 구매할 필..

[Knowledge] 로드밸런싱이란? Load Balancing

1). 로드 밸런싱 Load balancing 이란? 네트워크 기술의 일종인 로드밸런싱이라고 하는 부하분산은 중앙처리장치 또는 저장장치와 같은 컴퓨터 자원들에게 작업을 분산하는 것을 의미한다. 서버에 가해지는 부하(로드) 를 분산(밸런싱) 해주는 기술이라고 알고있으면 된다. 클라이언트의 수가 증가하게 되서 기존 서비스를 정상적으로 제공하기 힘들어졌을때, Scale out을 하거나, Scale up을 하게된다. 이때 Scale out 방식은 여러대의 서버로 트래픽을 균등하게 분산하는 로드 밸런싱이 반드시 필요하다. 1-1). 주요 기능 NAT(Network Address Translation) 사설 IP 주소를 공인 IP 주소로 바꾸는 데 사용하는 통신망의 주소 변조기 Tunneling 인터넷상에서 눈에 ..

[Redis] Window에서 Redis 설치 및 서비스 등록하기

간단하게 설치하는건 생략할예정...! 1). Redis 설치 알집을 받아서, 원하는 위치에서 관리자 권한으로 압축을해제한다. 2). redis.windows-service.conf 파일 수정 port와 database 갯수 및 비밀번호 설정 등 원하는 데로 설정한다. 3). 설정은 끝났으니, 서비스로 등록해서 실행시켜보자 cmd 관리자 권한으로 실행 redis파일이 있는 directory로 접근한다. 서비스 등록 및 실행 redis-server --service-install redis.windows-service.conf --service-name 서비스명 => 입력 redis-server --service-start --service-name 서비스명 => 실행 redis-cli -p 포트 =>실행 ..

[Spring-JSP] Transaction 전파 속성

우선 트랜젝션이 뭔지 먼저 간략하게 확인하고 가자. 1. 트랜잭션(Transaction)이란? 트랜잭션은 작업의 완전성 을 보장해주는 것. 작업을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우, 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 하지만 트랜젝션에서 세밀하게 보면 몇가지 전파옵션이 있다는것을 알아야한다. 스프링은 트랜잭션의 경계를 설정할 때 네 가지 트랜잭션 속성을 지정할 수 있다. 추가적으로 선언적 트랜잭션에서는 롤백/커밋 기준을 변경하기 위해 두 가지 추가 속성을 지정할 수 있다. 2. SpringFramework의 트랜잭션 전파 속성 2개 이상의 트랜잭션이 작동할 때, 기존의 트랜잭션에 적용되는 방법을 설정한다. 1). REQUIRED DEFAU..

[SpringBoot] DI 주입하는 방법 + 롬복 이용

우리는 Spring의 강력한 기능 DI를 기본적으로 사용하고있다. 간단하게 DI를 하는 방법 몇가지를 적어놓으려고한다. 1). 필드 주입 가장 간단하게 많이 사용하는 방식이다. 하지만 해당 방법으로는 TestRepository에 Access할 방법이 없다. public class TestService{ @Autowired private TestRepository testRepository; } 2). Setter 주입 Test 코드 작성할때 사용하기가 편하다는 장점이있다. 하지만 다른곳에서 해당 Repository를 바꿔버릴수가 있다. 굳이 바꿀 일이없으니 사용하지 않는다. public class TestService{ private TestRepository testRepository; @Autowir..

[JPA] Fetch Join 이란? N+1 이란? fetch join을 사용하는 이유

JPA를 사용하면서 엄청 중요하다고 하는 fetch join에 대해서 간략하게 정리해 두려고한다. 모르고 남발하는 코드를 지양하자. Fetch Join이란? Fetch Join은 JPQL의 중요한 기능이다. 성능최적화를 위해 사용하는데, LazyLoading으로 설정되어있는 아이들을 Eager로딩으로 땡겨올수있는 쿼리를 만든다. 즉 연관된 엔티티나 컬렉션을 SQL 한번에 조회하는 기능이라고 보면될것같다. => 쿼리가 2번 날아갈 상황을 쿼리 1번으로 조회할 수 있게 해준다. SQL에는 없는 문법 => 지연로딩으로 설정했어도 fetch join을 사용하면 eager과 같이 동시에 조회하게 된다. (프록시가 아닌 실제 Entity이다) 예제로 회원과 팀을 함께 조회하고 싶은 상황에 맞추어 확인해보자. SQL..

JPA

[Knowledge] 데드락이란? 데드락 해결방안 이론...

우선 데드락이라는 말을 많이 들어봤을거라 생각한다. 데드락이 도대체 무엇일까? 데드락이란. 예를 들어 A와 B가 재료 1,2,3을 각각 모두 가지고 있어야된다고 하자. 이때 A가 1을 가지고 손질하고, B는 2를 가지고 손질을 하고 끝났다고 보자. 이때 A가 2를 손질해서 가져가려고 하는데, B가 2를 점유하고 있는상태. B는 1을 손질해서 가져가려고하는데 A가 1을 점유하고 있는상태. 결국 A,B 둘은 서로 상대방이 점유하고 있는 리소스를 가지려 할때 발생한다. 서로 상대방의 리소스를 점유하려고 대기하고있는 상태를 Dead Lock 이라고 한다. 그렇다면 데드락이 어떤 상황에서 발생하는지 자세하게 알아보도록 하자. 데드락 발생 조건 데드락은 아래 네 가지 조건이 동시에 성립 할 때 발생한다. 그말인 즉..

[Java-DesignPattern] Facade Pattern이란? 퍼사드 패턴 설명

퍼사드 패턴은 시스템의 복잡성을 감추고, 사용자(Client)가 시스템에 접근할 수 있는 인터페이스(Interface)를 사용자(Client)에게 제공하는 방식이다. 따라서 퍼사드 패턴은 기존의 시스템에 인터페이스를 추가함으로, 복잡성을 감추기 위해 사용 백문이 불여일타 코드를 보고 머릿속에 정리해두자. 순서 -> 1). 관련 interface를 만든다. public interface FacadeCoffee { void make(); } 2). 세부 Class를 만든다. public class FacadeCappuccino implements FacadeCoffee { @Override public void make() { System.out.println("Cappuccino::make()"); } }..

반응형