본문 바로가기

전체 글83

무중단 배포 적용하기 이번에 프로젝트를 진행하면서 기능 구현이 빈번하게 일어나면서 사용중에 서버가 다운되는 현상이 자주 발생하였습니다. 이러한 사용중 불편함을 해소하고자 무중단 배포를 적용하여 사용 중에 서비스를 사용하지 못하는 상황을 막기 위해 도입하기로 결정했습니다. 무중단 배포란? 먼저, 무중단 배포 이전에 배포란 무엇일까요? 배포란 새로 개발된 코드를 패키징하여 서버에 새로운 버전의 애플리케이션을 실행시키는 행위를 의미합니다. 배포시에 새로운 버전의 애플리케이션을 실행하기 위해 기존에 존재하던 애플리케이션을 종료해야 하는데 이 과정에서 사용자에게 서비스가 되지 않는다면 사용자들은 불편함을 느끼게 될 것입니다. 이런 상황을 피하기 위해 서비스를 중단하지 않고 배포하는 행위인 무중단 배포를 하게 되었습니다. 무중단 배포는.. 2022. 8. 24.
데이터베이스 첫걸음 정리 - 4장. SQL 시작하기 SQL 명령어 입력해보기 다음 사이트는 간단하게 SQL 명령을 사용해볼 수 있는 사이트입니다. https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all 다음 사이트에 접속하여 다음 명령어를 입력해봅시다. SELECT * FROM customers; 다음 명령어를 입력하면 다음과 같은 결과를 얻을 수 있습니다. SELECT 명령구문 방금 실행한 SQL 명령은 SELECT 명령입니다. SELECT는 DML에 속하는 명령어로 SQL에서 자주 사용되며, 데이터베이스에 데이터를 읽어올 때 사용됩니다. SELECT 명령은 질의나 쿼리라고도 불립니다. SELECT * FROM customers; 위의 SQL 명령문이 의미하는 바는 다음과 같습니다. SE.. 2022. 8. 22.
데이터베이스 첫걸음 정리 - 3장 데이터베이스 서버 + 1 ~ 3장 정리 클라이언트/서버 모델 클라이언트/서버 모델이란 사용자 조작에 따라 요청을 전달하는 ‘클라이언트'와 해당 요청을 받아서 처리하는 ‘서버'로 소프트웨어를 나누고 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템을 말합니다. RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작합니다. 클라이언트/서버 처리 흐름 웹 시스템에서 클라이언트 기능을 하는 브라우저 사용자가 지정한 URL과 연결된 웹 서버에 요청을 보냅니다. 이 요청을 웹 용어로 Request(요청)라고 부릅니다. 클라이언트의 요청을 받은 웹 서버에서는 그에 맞게 처리하고 브라우저가 요청한 내용에 대해서 데이터를 반환합니다. 이런 서버의 응답을 Response(응답)라고 부르며 내용을 전달받은 브라우저는 해당.. 2022. 8. 20.
웹 사이트에 HTTPS 적용하기 여태까지 진행한 프로젝트들에서는 HTTP로만 통신을 진행했었는데 HTTP는 따로 설정을 해주지 않아도 사용할 수 있어 편하게 사용할 수 있지만 데이터를 평문으로 주고받기 때문에 애플리케이션이 보안에 취약한 상태가 됩니다. HTTPS를 사용하지 않고 HTTP를 사용할 경우 다음과 같은 보안 문제가 발생할 수 있습니다. Sniffing(스니핑) TCP/IP를 통해 통신하는 방식은 여러 경로(스위치, 라우터)를 거쳐서 전송되기 때문에 평문으로 전송하는 패킷은 중간에 도청이 가능해집니다. 해커가 위장하는 경우 확인할 방법이 없음 HTTP의 경우 요청을 보내는 상대가 누구인지 확인하는 처리를 하지 않습니다. 이는 누구든지 요청이 가능하다는 것을 의미합니다. HTTP만으로는 의미없는 요청을 수신하지 않는다거나 특정.. 2022. 8. 19.
Github actions + Jenkins를 통한 자동 배포 구현 AWS EC2에서 Docker로 Jenkins 실행 이전에 Github Actions를 이용해 CI를 구성했습니다. https://yongc.tistory.com/22 도커 허브에 올린 도커 이미지를 통해 자바 애플리케이션을 배포해봅시다. AWS EC2 인스턴스 생성하는 과정과 접속하는 과정은 생략하고 접속한 상태라고 과정하고 적겠습니다. 환경은 Ubuntu 18.04 에서 진행합니다 먼저 패키지 저장소를 최신으로 업데이트합니다. sudo apt-get -y update EC2에 도커를 설치합니다. sudo apt-get -y install docker.io EC2에서 docker 명령을 사용할때마다 root 권한을 이용하여 실행할 필요가 없도록 docker 그룹에 유저를 추가합니다. sudo userm.. 2022. 8. 14.
데이터베이스 첫걸음 정리 2장 - 다양한 데이터베이스 다양한 종류의 데이터베이스 데이터베이스는 사용 용도나 이를 제어하는 프로그래밍 환경 등 각각의 상황에 맞는 다양한 DBMS가 고안되었습니다. 데이터베이스 중에서도 SQL로 데이터를 다루는 관계형 데이터베이스가 주류를 이룹니다. 데이터베이스 종류 계층형 데이터베이스하지만 현재 DBMS로 채택되는 경우는 많지 않습니다. 가장 역사가 오래된 DBMS로, 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식의 데이터베이스입니다. 관계형 데이터베이스액셀 시트와 유사하며 관계형 데이터베이스는 표를 잔뜩 저장해두고 각각의 표에 이름을 붙여 관리하게 됩니다. 데이터베이스 안의 데이터는 SQL 명령어를 사용해 조작할 수 있습니다. 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스입니다. 객체지향 데이터베이.. 2022. 8. 4.
JIB을 이용한 컨테이너 배포 JIB 이란? 애플리케이션을 컨테이너화할 경우 보통 Dockerfile에 애플리케이션을 실행시킬 수 있는 내용을 정의하고 docker build를 통해 도커 이미지로 생성합니다. 자바 애플리케이션의 경우 애플리케이션을 빌드해서 jar 혹은 war 형태로 만든 후 Dockerfile을 작성해서 빌드된 결과물을 실행시키는 동작을 하도록 할 것입니다. 즉, 자바 빌드와 도커파일 빌드의 두번의 과정이 일어난다고 할 수 있습니다. 다음 그림의 첫번째는 자바 빌드와 도커파일 빌드를 두번하는 형태고 두번째는 Jib을 사용하는 빌드 흐름입니다. 위와 같이 Jib을 사용하면 프로젝트를 빌드함과 동시에 컨테이너 이미지까지 만들어서 원하는 레포에 푸시해 줄 수 있습니다. ./gradlew jib Jib 설정하기 jib을 사.. 2022. 8. 2.
데이터베이스 첫걸음 정리 - 1장 데이터베이스 데이터란? 컴퓨터안에 기록되어 있는 숫자를 의미합니다. 데이터 베이스란? 이러한 데이터의 집합을 데이터 베이스라고 부릅니다. 넓은 의미에서는 “컴퓨터 안에 기록된 모든 것”을 데이터베이스라고 할 수 있습니다. 단, 일반적으로 데이터베이스는 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태를 의미합니다. 데이터베이스가 데이터를 저장하는 장치 데이터베이스 내의 데이터는 영구적을 보존되어야 합니다. 주기억장치(RAM 같은)에만 데이터를 저장된다면 전원을 끄는 순간 데이터는 전부 사라지기 때문에 하드디스크나 플래시 메모리(SSD) 등 비휘발성 저장장치에 저장합니다. 데이터 베이스 사용예시 인터넷에서 웹 애플리케이션을 통해 물건을 쇼핑할 때 DB에 접근하게 됨 편의점에서 물건을 사면 계산대(.. 2022. 7. 31.