본문 바로가기

반응형

IT

Docker Commit & Build 도커 Commit & Build 도커 커밋은 실행 중인 컨테이너를 백업하는 용도로 많이 사용되며 도커 빌드는 Dockerfile을 기준으로 새로운 이미지를 생성할때 많이 사용된다. 도커 Commit 도커허브를 통해 이미지를 다운받은 다음 run을 통해 실행하면 컨테이너가 실행된다 이때 컨테이너간의 공간이 독립적이기 때문에 run 명령어로 여러 컨테이너를 실행시킬 수 있다. 이후 개발자가 컨테이너에 작업을 하면 오직 해당 컨테이너에만 수정한 로직이 반영되기 이를 커밋을 통해 이미지로 만들고 싶은 것이다. 그럼 그 이미지를 run하여 여러 컨테이너로 실행할 수도 있고 push를 통해 도커허브와 같은 레지스트리에 올려 여러 사용자가 함께 사용할 수 있게 할 수도 있다. 이제 ubuntu를 다운받아 실행시킨 후.. 더보기
Docker 기본 개념 도커란 리눅스 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 계속 바뀌는 서버 환경과 개발 환경에 빠르게 대응할 수 있는 서버 플랫폼이다. 만약 PC 하나에 클라이언트와 웹서버 DB서버를 구성해야 된다면 어떻게 진행할 수 있을까?? 아마도 PC의 저장공간은 나눈 뒤 각각 OS를 설치해서 한 가지만 선택하려 구동하는 멀티부팅 방식으로 구성해야 될 것이다. 아니면 AWS로 서버를 대여하던지 버추얼머신같은 가상머신을 이용해야 될 것이다. 위의 3가지 방법 모두 많은 리소스 발생한다. 또한 AWS 만 제외하곤 둘다 호스트 서버의 자원을 나눠 써야 됨으로 성능 저하를 일으킨다. 도커는 가상머신과 비슷한 개념으로 이해해도 좋다. 가상머신의 그림처럼 구성할 경우 웹서버와 DB서버를 만들기 위해 OS를 설치해야 되는 번.. 더보기
[AWS] EC2 Linux에 Docker 설치하기 먼저, aws 무료 버전 인스턴스를 생성하고자 한다. 1. aws 사이트에 접속하여 개인계정을 생성한다. (aws 프리티어 서비스를 이용하면 1년 무료로 사용가능 함) https://aws.amazon.com/ko/ 클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services AWS IoT에 대한 새로운 소식 산업, 소비자, 상업 및 자동차 워크로드에 대한 IoT 데이터를 수집, 저장 및 분석하는 새로운 방식에 대해 알아보세요. 발표 내용 살펴보기 aws.amazon.com 1) 우측 상단 aws 계정 생성을 클릭한다. 2) 이메일 주소, 암호/확인, aws 계정 이름 및 결제 정보를 입력 후 본인확인까지 완료한다. 3) 사용할 플랜을 선택한다. (무료버전 선택) 4) 가입 후 콘솔로.. 더보기
[Effective JAVA] Item 16 public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 class Point { public double x; public double y; } 위와 같은 퇴보한 클래스는 데이터 필드를 직접 접근할 수 있음으로 캡슐화의 이점을 제공할 수 없다. class Point { private double x; private double y; public Point(double x, double y){ this.x = x; this.y = y; } public double getx(){ return this.x; } public double gety(){ return this.y; } public void setx(double x){ this.x = x; } public void sety(double y){ this.y = y; } } 이렇게 패키지 바깥에서 접근할 수.. 더보기
[Effective Java] Item 15 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트와 어설프게 설계된 컴포넌트의 차이는 얼마나 잘 숨겼느냐다. 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔하게 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통함으로 이를 정보 은닉 또는 캡슐화로 부른다. 정보은닉의 장점은 1. 시스템 개발 속도를 높인다. 2. 시스템 관리 비용을 낮춘다. 3. 성능 최적화에 도움을 준다. (다른 컴포넌트에 영향을 주지 않고 최적화 작업을 수월하게 할 수 있음으로) 4. 소프트웨어 재사용성을 높인다. 5. 큰 시스템을 제작하는 난이도를 낮춘다.(시스템 전체가 완성되지 않더라도 개발 컴포넌트의 동작을 검증할 수 있기때문에) 정보은닉의 핵심을 접근 제한자의 사용에 있다. 이 핵심의 원리는 모든 클래스와 멤버의 접근성을 가능.. 더보기
[Effective Java] Item 14 Comparable을 구현할지 고려하라 Comparable의 compareTo는 Object의 equals와 동일하지만 2가지 다른점이 존재한다. 1. 동시성 비교 + 순서 비교 2. 제네릭 형태 Comparable을 구현한 객체는 순서가 존재함으로 Arrays.sort로 쉽게 정렬할 수 있다. ex) 명령줄 인수들을 중복 제거 후 알파벳 순으로 정렬 public static void main(String[] args){ Set s = new TreeSet(); //TreeSet (순서 정렬 + 중복제거) Collections.addAll(s, args); System.out.println(s); } String이 Comparatable을 구현되어있으므로 가능한 코드이다. 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable 인터페.. 더보기
JPA 성능 최적화 N+1 문제 JPA 성능상 가장 주의해야 되는 문제이다. 먼저, N +1 문제는 지연로딩, 즉시로딩 모든 경우에 발생할 수 있다. 1) 즉시로딩 N+1문제 즉시로딩의 경우 엔티티 매니저를 통해 조회할 경우 즉시 연결 데이터를 조인해서 조회하기때문에 N+1문제가 발생하지 않는다. 하지만, JPQL를 사용할 경우는 다르다. 먼저 JPQL은 즉시 로딩, 지연 로딩를 고려해서 쿼리를 실행하지 않기 때문에 아래와 같이 조회를 할 경우 문제가 발생한다. @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; @Embedded private Address addres.. 더보기
JPA 예외처리 및 프록시 심화 익히기 JPA 표준 예외 정리 1) 트랜잭션 롤백을 표시하는 예외 - 심각한 예외로 트랜잭션을 강제로 커밋해도 RollbackException 에러 발생 2) 트랜잭션 롤백을 표시하지 않는 예외 - 심각한 예외가 아니므로 개발자가 트랜잭션을 커밋할지 롤백할지 결정할 수 있음 JPA 표준 예외 정리 1) 트랜잭션 롤백을 표시하는 예외 - 심각한 예외로 트랜잭션을 강제로 커밋해도 RollbackException 에러 발생 2) 트랜잭션 롤백을 표시하지 않는 예외 - 심각한 예외가 아니므로 개발자가 트랜잭션을 커밋할지 롤백할지 결정할 수 있음 스프링 프레임워크의 JPA 예외 변환 서비스 계층에서 데이터 접근 계층의 구현 기술에 직접 의존하는 것은 좋은 설계가 아니듯이 예외도 같다. 서비스 계층에서 JPA 예외를 직접.. 더보기

반응형