🔵 쿠버네티스 강의 1주차 - Auto Scaling / Auto Healing / Deployment
·
TEAM STUDY/SERVER
🔵 Auto Scaling Auto Scaling 서비스는 사용자가 정의한 주기(스케줄링)나 이벤트(모니터링 알람)에 따라 서버를 자동으로 생성하거나 삭제 된다. 서비스에 사용자가 늘어나는 경우에는 원활한 서비스를 위해 서버를 늘리고, 다시 여유로운 상황이 되면 불필요한 서버를 자동으로 줄여 발생하는 요금을 낮출 수 있다. 🔵 Auto Healing - 자동 복구 HTTP Health Check 사용 시 일정시간 응답이 없으면 인스턴스 재가동 Auto Healing 이름의 기능 이라기보다는, Auto Scaling을 통해 "지정된 인스턴스의 최소 대수를 유지하는 것 '의 디자인 패턴을 Auto Healing라고 호칭하는 경우가 많다. 참고 사이트 1 참고 사이트 2 참고 사이트 3 ✖ Auto Heali..
🔵쿠버네티스 강의 1주차 - 도커와 쿠버네티스 차이점
·
TEAM STUDY/SERVER
🔵 도커와 쿠버네티스 차이점 도커는 '한 개의 컨테이너'를 관리하는 데 최적화 쿠버네티스는 '여러 개의 컨테이너'를 서비스 단위로 관리하는 데 최적화 도커 🐳 여러 컨테이너를 관리 / 예약 하는 플랫폼 "컨테이너 하나 띄어서 사용해야지" 기술적인 개념이자 도구 컨테이너 기반의 오픈소스 가상화 플랫폼 쿠버네티스 여러 컨테이너를 관리 / 예약 하는 도구 "2021년 06월 30일에 컨테이너를 자동으로 생성해야지" 도커를 관리하는 툴 점진적 업데이트 제공 -> 서비스 중단 없이 업데이트 가능 특정 컨테이너가 죽었다면 즉각 그 컨테이너를 복제 생성해서 서비스를 유지한다 컨테이너를 사용하면 하나의 큰 어플을 서비스 단위로 잘라 빠르게 배포 가능. 각각 분리해서 쓰니 변경사항이 분리된 다른 기능들에 영향 미치지 않..
🔵쿠버네티스 강의 1주차 - 도커란 ?
·
TEAM STUDY/SERVER
🔵 도커란 ? 도커(Docker)란 리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램이다. 만약 윈도우에서 리눅스를 쓰고 싶다면 어떻게 해야할까? 저장공간을 나누고 나서 처음부터 윈도우따로 리눅스따로 설치해서 한가지만 구동시키는 멀티부팅 방식. AWS을 사용하여 컴퓨터를 대여하는 방식. 버추얼박스같은 가상머신 솔루션을 이용하는 방법 가상머신은 하이퍼바이저를 이용해 Guest OS를 만들어낸다. 예를 들어, 윈도우 운영체제를 메인으로 쓰고 있다면 이는 Host OS가 되는 것이고 이 위에 Ubuntu를 가상머신위에 구동시킨다면 이는 Guest OS가 되는 것이다. Guest OS를 구동시키려면 Host OS에서 자원을 일부 사용해야 한다. 따라서 Host OS도..
🔵쿠버네티스 강의 1주차 - 왜 쿠버네티스를 사용해야 하는가
·
TEAM STUDY/SERVER
🔵 왜 쿠버네티스를 사용해야 하는지 컨테이너는 애플리케이션을 포장하고 실행하는 좋은 방법이다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 한다. 예를 들어 컨테이너가 다운되면 다른 컨테이너를 다시 시작해야 한다. 이 문제를 시스템에 의해 처리한다면 더 쉽지 않을까? 그것이 쿠버네티스가 필요한 이유이다! 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공한다. 애플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴 등을 제공한다. 예를 들어, 쿠버네티스는 시스템의 카나리아 배포를 쉽게 관리 할 수 있다. 서비스 디스커버리와 로드 밸런싱 쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이..
쿠버네티스 강의 1주차
·
TEAM STUDY/SERVER
쿠버네티스 강의 ✅ 참고 사이트 쿠버네티스 인프런 강좌 자료실 쿠버네티스 기본자료 ✅ 다음시간에 준비 해올 것들 wsls 2004 이후 / 설치 포트 폴리오 ? 를 해야 외부에서 접속이 가능하다. putty 설치 와이파이로는 사내 원격 접속 안된다. 서버 자원을 잘 이용하기 위해서는 가상화 기술 이해 잘 해야 함 자원 격리 기술 -> 가상화 기술 VM -> 가상화 기술 Container -> 오케스트레이터 Container -> 클라우드 서비스 ✅ 왜 쿠버네티스를 사용해야 하는지 트래빅 부과 - 여러 시스템을 사용할 때 문제 발생 트래픽 양에 따라서 서버 자원 할당 AutoHealing 를 이용해 운영서버 죽고 백업서버 대체 백업 서버를 두고 운영 서버 죽었을 떄 대응 가능 ✅ 알아볼 것 Auto Sca..
mybatis / 존재하지 않는 테이블명 에러 잡기
·
개발중/MYSQL
java.sql.SQLSyntaxErrorException: Table 'BINSOO_TABLE_1103' doesn't exist 지금 하고 있는 프로젝트 중에서 관리하는 데이터가 너무 많아서 유동적으로 SEQ 마다 테이블이 생성되는 구조를 가진 프로젝트를 짜고 있었다. SELECT * FROM BINSOO_TABLE_#{SEQ} 이렇게 연결이 되어야 하는데 만약에 존재하지 않는 테이블명이라면 ? 물론 위에 처럼 로직을 세우려면 꼭 SEQ 마다 TABLE 이 존재해야겠지만 정말 혹시나 하는 상황에는 아래처럼 에러 메세지를 이용하는 방법도 존재한다. public List selectBinsooData( BinsooVo vo ) { List voList = null; try { voList = SqlSes..
JPA - 즉시 로딩과 지연 로딩
·
개발중/Java Persistence API (JPA)
즉시 로딩과 지연 로딩 프록시 객체는 주로 연관된 엔티티를 지연 로딩 할 때 사용한다. Member member = em.find( Member.class, "binsoo" ) - 객체 그래프 탐색 Team ream = member.getTeam() - 팀 엔티티 사용 team.getName() 회원 엔티티를 조회할 때 연관된 팀 엔티티도 함께 DB 에서 조회하는 것이 좋을까 ? 아니면 회원 엔티티만 조회해두고 팀 엔티티는 실제 사용하는 시점에 DB 에서 조회하는 것이 좋을까 ? 즉시 로딩 - EAGER LOADING 엔티티를 조회할 때 연관된 엔티티도 함께 조회한다. 하이버네이트는 가능하면 SQL 조인을 사용해서 한 번에 조회한다. 설정 방법 @ManyToOne( fetch = FetchType.EAG..
JPA / 프록시 알아보기
·
개발중/Java Persistence API (JPA)
프록시 ? 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 DB 에 저장되어 있으므로 연관된 객체를 마음껏 탐색 하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 DB에서 조회하는 것이 아니라 실제 사용하는 시점에 DB를 조회할 수 있다. 하지만 자주 함께 사용하는 객체들을 조인을 사용해서 함께 지원하는 것이 효과적이다. ✅ 프록시 객체? 지연로딩 기능을 사용하려면 실제 엔티티 객체 대신에 DB 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라고 한다. ✅ 프록시 기초 JPA 에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find() 를 사용한다. 이 메소드는 영속성 컨텍스트에 엔..