본문 바로가기
반응형

분류 전체보기3262

쿠버네티스 설치 ## 3.2 쿠버네티스 설치 https://kubernetes.io/ko/ Ubuntu18.04 실습 예제 소스 (https://github.com/uphiller/dockerbook/blob/master/kubernetes-setup.sh) sudo apt-get update sudo apt-get -y install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://down.. 2020. 9. 22.
도커 오케스트레이션 오케스트레이션을 활용하면 여러 개의 호스트를 단일 호스트처럼 사용 할 수 있다. 호스트의 변경사항에 유연하게 대처 할 수 있다. 오케스트레이션 사용시 장점 : 컨테이너 프로비저닝 및 배포 : 컨테이너의 중복성 및 가용성 : APP 로드를 균등하게 분산 : 한 호스트에서 다른 호스트로 컨테이너 이동 : 컨테이너 간 리소스 할당 : 내부 컨테이너에서 실행되는 서비스의 외부 노출 : 컨테이너 간 서비스 검색 로드 밸런싱 : 컨테이너 및 호스트의 상태 모니터링 : APP을 실행하는 컨테이너와 관련하여 APP 구성 오케스트레이션 제품 : 도커 스웜 : 쿠버네티스 : 랜처 : 메소스 2020. 9. 22.
Docker-Compose (도커컴포즈) - 그럼 앞에서 만들었던 MySQL, SpringBoot 컨테이너를 docker-compose.yml 파일로 만들어 보자. version: '3.3' services: app1: image: springboot ports: - 8080:8080 container_name: app1 mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=1234 - TZ=Asia/Seoul container_name: mysql ports: - 3306:3306 https://docs.docker.com/compose/install/ 도커 명령문을 이용하여 docker-compose를 설치한다. sudo curl -L "https://github.com/docker/com.. 2020. 9. 22.
도커파일 (Dockerfile) --- Dockerfile 생성 --- FROM openjdk:8-jdk-alpine (openjdk8 버전을 사용) ADD docker/target/docker-0.0.1-SNAPSHOT.jar app.jar (컨테이너의 최상위/폴더 위치에 app.jar 파일이 복사 됨) ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/app.jar"] 2020. 9. 22.
도커 네트워크 환경 ip addr show docker0 2020. 9. 21.
도커 명령어 ubuntu@ip-10-0-1-230:~$ docker build -t springboot . (Dockerfile 있는곳에서 실행 - 홈폴더) 생성된 도커 이미지를 바탕으로 도커 컨테이너 명령어를 실행. ubuntu@ip-10-0-1-230:~$ docker run --name app1 -d -p 80:8080 springboot ubuntu@ip-10-0-1-230:~$ docker start app1 Bridge 모드는 도커 네트워크의 Default 설정이며 가장 많이 사용하는 네트워크이다. ubuntu@ip-10-0-1-230:~$ ip addr show docker0 C:\Users\user>docker network inspect bridge ---- nginx-custom Dockerfile.. 2020. 9. 21.
도커 레지스트리 배포 프로세스 1. 이후 레지스트리를 사용하여 CI서버에서 새로운 소스의 도커 이미지를 빌드한 다음, 2. 레지스트리에 푸시하고, 3. 테스트 서버에서는 푸시된 최신의 이미지를 다운로드 받아서, 다시 컨테이너로 실행하면 도커 레지스트리를 이용한 배포 프로세스가 완성된다. 2020. 9. 21.
/etc/group 사용자 그룹에 추가 다음 명령을 실행하면 일반 계정 유저도 도커 사용 가능 (/etc/group 에 사용자 추가) $ sudo usermod -aG docker $USER 2020. 9. 18.
쿠버네티스란? 쿠버네티스 서비스를 생성하고 로컬컴퓨터나 다른 인스턴스에서 쉘 명령을 실행해야만 코버네티스 오브젝트를 제어할수 있다. 쉘스크립트를 사용해야 하기때문에 인스턴스를 하나 만들어서 작업을 할 것이다. ekctl 명령어로 클러스터를 생성할 수도 있다. #cluster.yaml (파일 생성) apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: board-cluster region: ap-northeast-2 $ eksctl create cluster -f cluster.yaml 사실 쿠버네티스를 다루려면 도커보다는 좀 더 많은 기본 지식이 필요하다. 그중에서도 네트워크에 대해 많이 알아 두어야 한다. ## 쿠버네티스 아키텍처 도커가 컨테이너와 관.. 2020. 9. 16.
AWS EKS - Create Kubernetes cluster on Amazon EKS | the easy way www.youtube.com/watch?v=p6xDCz00TxU eksctl create cluster \ --name my-cluster \ --version 1.17 --region ap-northeast-2 --nodegroup-name linux-nodes \ --node-type t2.micro \ --nodes 2 Nirmata EKS Manager - kubectl get nodes - kubectl get pod - kubectl get ns - eksctl delete cluster --name test-cluster 2020. 9. 16.
스프링부트 강좌 14강(블로그 프로젝트) - http요청 실습2 www.youtube.com/watch?v=Fd5Rhz0j8QQ&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=15&t=0s 어떻게 데이터를 보낼지 학습 우선 간단히 Member 클래스 생성 (아직 Database 생성은 안되었지만...) - 모델도 생성 - 자바에서는 변수는 Private 로 만든다. (이유는 객체지향에서는 변수에 다이렉트로 접근하게 하면 안됨) (변수의 상태는 메소드(함수) 에 의해서 변경되게 해야함) package com.cos.blog.test; public class Member { private int id; private String username; private String password; private String email; } 따.. 2020. 9. 12.
AWS 기존 EC2 인스턴스에 스냅샷 복원하기 AWS EC2 인스턴스를 사용하다 보면 아래와 같은 상황이 발생할 수 있습니다. 복잡한 환경설정을 구성하다가 패키지가 꼬여버린 상황 명령어를 잘못 입력하여 시스템의 일부가 망가진 상황 현재 상황상 급하게 특정 시점의 서버 환경으로 되돌려야하는 상황 이외에도 개발을 진행하다 보면 다양한 상황이 발생할 수 있습니다. 기존의 온프레미스(On-Premise) 환경에서는 위와 같은 상황에 대처하기가 매우 힘들었습니다. 시간과 인력 및 비용이 굉장히 많이 드는 작업이었습니다. 하지만 클라우드 환경이 보급되면서 위와 같은 상황 대처를 할 수 있는 편리한 도구들을 제공하기 시작했습니다. AWS 플랫폼은 기존에 서버 개발자가 모두 수작업으로 해야 했던 많은 일들을 간편하게 제어할 수 있는 도구들을 제공하는 것입니다. 대.. 2020. 9. 11.
천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기 ALB vs NLB CloudWatch를 활용한 모니터링 Amazon CloudFront CloutFront로 User Experience 개선 Amazon Aurora 읽기 복제본 오토스케일링 RDS 읽기 복제본 인스턴스로 DB부하 분산 Amazon ElastiCache ElastiCache 를 활용한 부하분산 및 성능향상 용도에 적합한 DB서비스 적용 주요 고려사항 - 재해복구(DR) / 멀티 리전 시스템 고려 - 멀티 리전 시스템 배포 CloudFromation 으로 인프라 리소스를 모델링 S3 교차 리전 복제 Route53 를 통한 멀티 리전 라우팅 - 사용자 위치에 기반한 지리위치 라우팅 구성으로 멀티 리전 부하분산 가능 사용자수 > 10,000,000 주요 고려사항 - 글로벌 시스템 확장 - .. 2020. 9. 11.
스프링부트 강좌 13강(블로그 프로젝트) - http요청 실습1 www.youtube.com/watch?v=BNiDNAWZn-E 1. STS 와 Postman 실행 2. com.cos.blog.test 패지지 밑에 HttpControllerTest 클래스 생성 3. HttpControllerTest 클래스 수정 // 사용자 요청 -> 응답 (HTML) // @Controller // 사용자가 요청 -> 응답(Data) 시 사용 : 이번 실습 @RestController - 함수 4개 생성 1) public String getTest() { retuen "get 요청"; // String 함수 생성으로 리턴도 문자열 반환 } 2) postTest() 3) putTest() 4) deleteTest() - 각 함수에 어노테이션 생성 ^^^^^^^^^^^^^^^^^^^^^.. 2020. 9. 9.
스프링부트 강좌 12강(블로그 프로젝트) - MIME타입이란 www.youtube.com/watch?v=NVjnu4xBdpw - HTTP 헤더와 HTTP 바디의 기본 개념 : 헤더 - Data 설명 : 바디 - 실제 Data HTTP 통신 - 패킷 스위칭 : 회선 공유 : 모든 패킷에는 헤더에 정보값이 있다. (조립을 하기 위해) - 서킷 스위칭 : 속도 빠름, 회선 비용 증가 MINE 타입 (developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types) - 데이터를 보낼때 정하는 방식 - 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘. : 웹에서 파일의 확장자는 별 의미가 없다. : 그러므로 각 문서와 함께 올바른 MIME 타입을 전송하도록, 서버가 정확히 설정하는 것이 중요. - JSON 파.. 2020. 9. 9.
스프링부트 강좌 11강(블로그 프로젝트) - stateless란 www.youtube.com/watch?v=fLpmG5tIg1c 요약 : stateless방식은 한번의 요청과 응답이 이루어지면 클라이언트와 서버와의 연결선이 끊어지는 것을 말한다. 이 방식은 주로 http에 사용되는 방식이며 이는 서버의 부하를 줄여준다. - JAVA 는 소켓통신 : Stateful 방식 - 연결 지속 (HTTP 방식은 이 방식을 사용하지 않음) : 세션 (인증) - 데이터를 응답해줄 준비가 됨 - HTTP 방식 (Stateless 방식) : 요청과 응답이 이루어지고 난후 곧바로 끊어버림 : 요청시마다 스트림을 연결해서 Data를 주고 받는 방식 : 서버 부하 적음 : 요청/응답/끊기 : 세션(인증) 유지 방법 없음 : Stateless 환경에서 어떻게 세션을 유지하는지 배운다. (스프.. 2020. 9. 9.
스프링부트 강좌 10강(블로그 프로젝트) - http1.1 요청방식 https://www.youtube.com/watch?v=6lSMCAq-fYg&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=10 1. POSTMAN 설치 (크롬 확장프로그램 조회) : Postman은 개발한 API를 테스트하고, 테스트 결과를 공유하여 API 개발의 생산성을 높여주는 플랫폼입니다. - Postman Interceptor 설치 - 설치 후, 시작프로그램에서 Postman 검색 실행 2. HTTP1.1 get post delete put - 통신을 하기 위해서 Byte Stream (8bit) 필요 - 요청을 항상 클라이언트가 한다. - 통신방법 : 4가지 (요청의 방법) 1) GET : 데이터를 줘 ! - Select 2) Post : 데이터를 추가해줘.. 2020. 9. 9.
스프링부트 강좌 9강(블로그 프로젝트) - Git의 3가지 영역 https://www.youtube.com/watch?v=pkR_ZeMjWGo&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=9 Git 은 작업영역, 인덱스, 헤드 3가지 영역을 동기화한다. 2020. 9. 9.
스프링부트 강좌 8강(블로그 프로젝트) - Git의 추상적 개념 https://www.youtube.com/watch?v=9Nk1a6UMAqo&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=8 2020. 9. 9.
스프링부트 강좌 7강(블로그 프로젝트) - Git설치 및 Github연동 https://www.youtube.com/watch?v=O13vCHjKKuk&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=8&t=0s 1. github 회원가입 (https://github.com) 2. git 설치 (https://git-scm.com/downloads) 3. 내 프로젝트 git 연동 - 해당 blog 프로젝트 폴더로 이동 (C:\workspace\blog) - 마우스 오른쪽 -> Git Bash Here git init git add . git commit -m "환경세팅완료 v1" git remote add origin 주소 git push origin master - Cmd 창에서 -> git init 입력 - git add . (해당 폴더내.. 2020. 9. 8.
지원 종료 (End of Support) 된 소프트웨어의 클라우드 이전 방안 EOS 이전 방안 https://www.youtube.com/watch?v=zkTsYh92N9c&list=WL&index=4&t=376s 지원종료된 OS (Windows Server 2003, 2008, 2008R2) 에서 구동되고 있는 어플리케이션 및 상용 소프트웨어를 컨테이너 기술을 사용하여 변경 (소스 코드 수정, 재 컴파일, 또는 소프트웨어 업그레이드) 없이 AWS 클라우드 상의 최신 OS (Windows Server 2012, 2016, 2019) 로 이전하는 서비스인 AWS EMP 에 대하여 소개합니다. EMP (EOS Migration Program) Windows on AWS - 비용효과 - 온프레미스 비용 - 동일 사이징의 클라우드 - 최적화 사이징의 클라우드 AWS는 Windows 20.. 2020. 9. 8.
스프링부트 강좌 6강(블로그 프로젝트) - MySQL 스프링연결 https://www.youtube.com/watch?v=G6fgEiI_pEA&list=WL&index=2&t=0s 1. MySQL 스프링 연결 방법 - src/main/resources/application.properties 파일을 application.yml 이름 변경 (shift+F6) : yml 은 JSON 같은 데이터 타입을 가지고 있다. : 스프링부트는 yml 파일에 모든 설정을 할 수 있다. - application.yml 내용 저장 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul username: cos pas.. 2020. 9. 8.
스프링부트 강좌 5강(블로그 프로젝트) - MySQL 환경세팅 https://www.youtube.com/watch?v=GuHhQP0897s&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=6&t=1s 1. MySQL Workbench -> 관리자로 접속하기 (root) 2. MySQL 사용자 생성 및 권한주기 및 DB생성 -- 유저이름@아이피주소 create user 'cos'@'%' identified by 'cos1234'; -- ON DB이름.테이블명 -- TO 유저이름@아이피주소 GRANT ALL PRIVILEGES ON *.* TO 'cos'@'%'; CREATE DATABASE blog CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; use blog; -- 기존 cos 유저 .. 2020. 9. 8.
스프링부트 강좌 4강(블로그 프로젝트) - 프로젝트 실행해보기 https://www.youtube.com/watch?v=n33ao_cbhsU&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=5&t=1s Controller 하나 생성하여 실행해 보기 - com.cos.blog 선택 -> NEW -> Package -> com.cos.blog.test 생성 - 패키지는 폴더가 생성됨 - com.cos.blog.test 선택 -> NEW -> Class -> BlogControllerTest 생성 - Controller 는 Class 이다. a라는 지역변수를 사용하면 외부 Aninal 함수에서 a를 사용못하니, 스프링에서 관리를 해줌 패지지 스캔 : 필요한 것들을 메모리 로드 IoC 싱글톤 - 스프링 컨테이너에게 모든 객체 변수를 관리 .. 2020. 9. 7.
스프링부트 강좌 with JPA 5강 - ORM이란 무엇인가요? https://www.youtube.com/watch?v=4CRpndN3tP0&list=PL93mKxaRDidG_OIfRQ4nztPQ13y74lCYg&index=5 JPA는 ORM 기술이다. ORM (Object Relational Mapping) - 오브젝트를 데이터베이스에 연결하는 방법론이다. - 모델링 의미 : 추상적인 개념을 현실화 - JAVA DATA와 데이터베이스의 DATA는 형식이 다름 - 원래는 1번이 생성되고 2번이 생성됨 하지만 ORM은 오브젝트를 통한 데이터 매핑이다. - ORM이란? 클래스를 만들어 실행하면 데이터베이스에 테이블이 자동생성되는 기법 JPA는 반복적인 CRUD 작업을 생략하게 해준다. - JPA 함수하나로 제공한다. : 세션오픈 -> 쿼리전송 -> DATA 제공 -> .. 2020. 9. 7.
스프링부트 강좌 with JPA 4강 - JPA란 무엇인가요? JPA는 JAVA Persistence API 이다. - DBMS를 활용한 영구히 기록할 수 있는 환경 - JAVA 프로그램밍을 할때 영구적으로 DATA를 저정하기 위해 필요한 인터페이스가 JPA 이다. - API : Application Programing Interface - 프로토콜 vs 인터페이스 차이 약속 약속 3명 (A,B,C) 권리가 동등 상의하지 않음 상하관계가 존재하는 약속 ex) WWW(인터넷) 프로토콜 2020. 9. 7.
스프링부트 with JPA 블로그 2강 - 의존성 설정 - NEW -> Spring Starter Project 1. Spring Boot DevTools 클릭 https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/html/using-boot-devtools.html 20. Developer tools Applications that use spring-boot-devtools will automatically restart whenever files on the classpath change. This can be a useful feature when working in an IDE as it gives a very fast feedback loop for code changes. By def.. 2020. 9. 7.
스프링부트 with JPA 블로그 1강 - 환경세팅 1. Oracle JDK 1.8 설치 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html Java SE Development Kit 8 - Downloads Java SE Development Kit 8 Downloads Thank you for downloading this release of the Java™ Platform, Standard Edition Development Kit (JDK™). The JDK is a development environment for building applications, applets, and components using the Java programming la www.ora.. 2020. 9. 6.
스프링부트 동작 구조 (9) 응답 html파일을 응답할지 Data를 응답할지 결정해야 하는데 html 파일을 응답하게 되면 ViewResolver가 관여하게 된다. 하지만 Data를 응답하게 되면 MessageConverter가 작동하게 되는데 메시지를 컨버팅할 때 기본전략은 json이다. 1. 톰캣 실행시 (web.xml 구동) 2,3,4번 미리 사전작업을 구동한다. (ex. DB를 띄운다) 5. 사용자가 Request를 요청한다. 6. DispatcherServlet (web.xml 일이 많아서 대신 함) -> 7,8 번 수행 (응답은 Data or HTML 선택) 2020. 9. 6.
스프링부트 정적 컨텐츠 스프링 웹 개발 기초 1) 정적 컨텐츠 2) MVC와 템플릿 엔진 3) API 2020. 9. 5.
반응형