본문 바로가기

전체 글167

Kubernetes [ Inflearn : 2024.01 ~ 2024.02 ] 1주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/12주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/23주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/34주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/45주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/56주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/6 [ Ud.. 2024. 1. 10.
8. Replication Controller, ReplicaSet - Template, Replicas, Selector & 실습 컨트롤러는 서비스를 관리하고 운영하는데 크게 아래 4가지 기능으로 도움을 줍니다. Auto Healing : 노드 위에 파드가 있는데, 파드가 다운되거나 파드가 스케줄링이 되어 있는 노드가 다운되면 파드에서 돌아가던 서비스가 장애가 옵니다. 하지만 컨트롤러는 이것을 즉각 인지하고 파드를 다른 노드에 새로 만들어줍니다. Software Update : 여러 파드에 대한 버전을 업그레이트 해야 될 경우 컨트롤러를 통해 한번에 쉽게 할 수 있고, 업그레이드 도중 문제가 생기면 롤백을 할 수 있게 해줍니다. Auto Scaling : 파드의 리소스가 리미트 상태가 되었을 때 컨트롤러는 이 상태를 파악하고 파드를 하나 더 만들어 줌으로써 부하를 분산시키고, 파드가 죽지 않도록 해주는데 그럼 이 서비스는 성능에 장.. 2024. 1. 10.
7. Namespace, ResourceQuota, LimitRange & 실습 개요 쿠버네티스 클러스터라 해서 전체가 사용할 수 있는 자원이 있습니다. 일반적으로 메모리, CPU가 있을거고, 클러스터 안에는 여러 네임스페이스들을 만들 수 있고, 네임 스페이스 안에는 여러 Pod를 만들 수 있습니다. 각 Pod는 클러스터 자원을 공유해서 사용하는데, 만약 한 네임스페이스 안에 있는 Pod가 클러스터에 남은 자원을 모두 사용하면 다른 Pod 입장에서는 더 이상 쓸 자원이 없어서 자원이 필요할 때 문제가 발생하게 됩니다. 이런 문제를 해결하기 위해 네임 스페이스마다 ResourceQuota를 달면 최대 한계를 지정할 수 있습니다. Pod가 한계를 넘을 수 없고, Pod 입장에서 자원이 부족해 문제가 될지언정 다른 네임 스페이스에 있는 Pod에는 영향을 끼치지 않게 해줍니다. 한 Pod가.. 2024. 1. 9.
6. ConfigMap, Secret & 실습 ConfigMap, Secret의 사용 시기에 대해 알아봐요. 만약 개발 환경과 상용 환경이 있습니다. A라는 서비스가 있는데 이 서비스는 일반 접근과 보안 접근이 가능합니다. 그래서 개발 환경에서는 이 보안 접근을 해제할 수 있는 옵션이 있습니다. 보안 접근을 한다면 접근 User와 Key를 세팅할 수 있습니다. 이처럼 설정하고 있는데, 상용 환경으로 배포를 해야한다면 이 값이 바뀌어야 합니다. 다시 보안 접속으로 설정을 해야하고, User와 Key값도 변경해야 합니다. 근데 이 값은 컨테이너 안에 있는 서비스 이미지에 들어있는 값이기 때문에 이 내용을 바꾼다는 것은 개발 환경과 상용 환경에 컨테이너 이미지를 각각 관리하겠다는 의미가 됩니다. 이미지를 별도로 관리한다는 것은 부담되는 일이에요. 그래서 .. 2024. 1. 8.
5. Volume - emptyDir, hostPath, PV/PVC & 실습 1. emptydir : 컨테이너들끼리 데이터를 공유하기 위해 볼륨을 사용하고, 최초 이 볼륨이 생성될 때 볼륨안에 내용이 비어 있기 떄문에 emptyDir이라고 명칭이 된 것입니다. 만약 컨테이너 1번이 웹 역할을 하는 서버, 컨테이너 2번이 백엔드단을 처리해주는 서버라면 이 웹서버로 받은 어떤 특정 파일을 마운트가 된 볼륨에 저장하고, 백엔드단에 있는 2번 컨테이너 역시 이 볼륨을 마운트 해놓으면 이 두 서버가 이 볼륨을 자신의 로컬에 있는 파일처럼 사용하기 때문에 두 서버가 파일을 주고 받을 필요없이 편하게 사용할 수 있습니다. 볼륨은 Pod안에 생성 되기 때문에, Pod 문제가 발생해서 재생성 되면 데이터가 모두 없어진다는 것을 의미합니다. 그래서 이 볼륨에 쓰이는 데이터는 꼭 일시적인 사용 목적.. 2024. 1. 8.
5. 트랜잭션 5장은 Mysql 동시성에 영향을 미치는 Lock과 트랜잭션, 트랜잭션의 격리 수준을 살펴보겠다. 트랜잭션은 작업의 완선성을 보장해 주는 것이다. 즉 논리적인 작업 셋을 모두 완벽하게 처리하거나, 그렇지 않으면 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 해주는 기능이다. Lock, 트랜잭션은 서로 비슷하지만 사실 Lock은 동시성을 제어하기 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 예로 하나의 회원 정보 레코드를 여러 커넥션에서 동시에 변경하는데 Lock이 없다면 하나의 데이터를 여러 커넥션에서 변경할 수 있다. 레코드의 값은 예측할 수 없다. Lock은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있.. 2024. 1. 7.
4.3 아키텍처 (하) 4.2.12 어댑티브 해시 인덱스 일반적으로 '인덱스'는 테이블에 사용자가 생성해둔 B-Tree 인덱스를 의미한다. 또는 사용자가 직접 테이블에 생성해둔 인덱스가 우리가 일반적으로 알고있는 인덱스일 것이다. 하지만 '어댑티브 해시 인덱스'는 사용자가 수동으로 생성하는 인덱스가 아니라 InnoDB 스토리지 엔진에서 사용하자 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이며, 사용자는 innodb_adaptive_hash_index 시스템 변수를 이용해서 어댑티브 해시 인덱스 기능을 활성화하거나 비활성화 할 수 있다. 어댑티브 해시 인덱스는 B-Tree 검색 시간을 줄여주기 위해 도입된 기능이다. InnoDB 스토리지 엔진은 자주 읽히는 데이터 페이지의 키 값을 이용해 해시 인덱스를 만들고, 필요할 .. 2024. 1. 7.
4. Service - Cluster IP, NodePort, LoadBalancer 1.Service : 기본적으로 자신의 Cluster IP를 가지고 있습니다. 그리고 이 서비스를 Pod에 연결시켜놓으면, 서비스의 IP를 통해서 Pod에 접근할 수 있습니다. 앞 글에서 Pod에서 똑같이 클러스터 내에서 접근할 수 있는 IP가 있었는데, 굳이 서비스를 사용하는 이유는 k8s에서 시스템 장애, 성능 장애 등 언제든지 죽을 수 있고, 그러면 다시 재생성되도록 설계되어 있는 오브젝트입니다. 파드의 IP는 재생성되면 변하기 때문에 Pod의 IP에 대한 신뢰성이 떨어집니다. 이 Service의 IP도 클러스터 내에 다른 모든 오브젝트들이 접근할 수 있지만 외부에서는 접근할 수 없습니다. Pod는 여러개 연결이 가능하고, 이렇게 여러개 연결 시켰을 때 서비스가 트래픽을 분산해서 Pod에 전달해줍니.. 2024. 1. 4.
4.2 아키텍처 (중) Mysql 스토리지 엔진 중 가장 많이 사용되는 InnoDB 스토리지 엔진을 간단히 살펴봅시다. 유일하게 레코드 기반의 잠금을 제공하며, 때문에 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어납니다. 1) 프라이머리 키에 의한 클러스터링 : InnoDB 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링되어 저장한다. 다시말해 프라이머리 키값의 순서대로 디스크에 저장된다는 뜻이며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용한다. 프라이머리 키가 클러스터링 인덱스이기 때문에 프라이머리 키를 이용한 레인지 스캔은 상당히 빨리 처리된다. 결과적으로 쿼리의 실행 계획에서 프라이머리 키는 기본적으로 다른 보조 인덱스에 비해 비중이 높게 설정된다. 2) 외래 .. 2024. 1. 4.
3. Pod - Container, Label, NodeSchedule & 실습 Pod 특징을 보면 Pod 안에는 하나의 독립적인 서비스를 구동할 수 있는 컨테이너들이 있습니다. 컨테이너들은 서비스가 연결될 수 있도록 포트를 가지고 있는데 한 컨테이너가 하나 이상의 포트를 가질 수는 있지만, 한 Pod 내에서 컨테이너들끼리 포트가 중복될 수는 없습니다. 1) Container : 위 2개 컨테이너는 한 호스트로 묶여있다고 보면 되는데 Container1에서 2로 접근할 때 localhost:8080로 접근할 수 있습니다. 그리고 Pod가 생성될 때 고유의 IP가 자동으로 할당되는데 쿠버네티스 클러스터 내에서만 위 IP를 통해서 Pod에 접근할 수 있습니다. 외부에서는 접근이 불가합니다. 만약 Pod에 문제가 생기면 시스템이 스스로 감지해서 Pod를 삭제하고, 다시 재생성하는데 이때 .. 2024. 1. 3.
2. 쿠버네티스 클러스터 실습(Mac Intel) - 여러 오류를 만나며 저는 Mac Intel을 사용한 맥북을 사용하고 있습니다. 쿠버네티스 클러스터를 처음 접해보아서 엄청난 삽질, 실습을 진행하는 과정에서 mac m series로 잘못 따라가고, pw 접근 불가 등 여러 문제가 있었는데요.. 계속 꼬이고 안되었는데 애초에 m1을 위한 것이라 7시간을...허비 하루정도 깊게 파고 들어가보니 원하는 결과물을 얻어서 뿌듯했습니다!!! 혹시 실습해보시다가 안되는거 있으시면 답들 달아주세요!! 도움드릴 수 있다면 최대한 노력하겠습니다~ 1. XShell : [ 터미널로 Master, Wokred 노드에 접속이 가능해서 설치하지 않았습니다. ] 2. VirtualBox 설치 (VM 및 내부 네트워크 생성 툴) : VirtualBox (7.0.8 버전) 3. Vagrant 설치 및 k.. 2024. 1. 2.
1. 쿠버네티스 시작 [ Introduction ] 쿠버네티스를 큰 기업들이 꼭 써야하는 이유는 큰 기업들은 대규모의 서비스를 운영하고 있기 때문에 최대한 자원을 효율적으로 써야 비용적으로 유리하다. 서버 자원을 효율적으로 쓰기 위해서는 가상화기술에 대해 관심을 가질 수 밖에 없고, 쿠버네티스를 잘 이해하려면 가상화 기술들에 대한 히스토리를 알 필요가 있다. Linux에는 자원들이 격리해서 프로세스들이 독립적인 환경에서 돌아가게 해주는 기술들이 있었는데, 어려워서 대중적으로 잘 사용하지 않았다. 때문에 이후 VM 가상화 기술이 발전이 되었다. 하지만 하다보니 자동화는 되는거 같은데 생각보다 시스템 효율이 안나는 것을 느끼게 됩니다. 가장 큰 원인을 제공하는것이 VM 가상화를 하기 위해서 무거운 OS를 띄워야 한다는 근본적인 .. 2023. 12. 27.
7. 도커 스웜 도커 스웜을 사용하는 이유 앞의 내용은 대부분 하나의 호스트를 기준으로 합니다. docker ps는 하나의 도커 엔진에 존재하는 컨테이너의 목록을 출력하며 create, run 명령어 또한 하나의 도커 엔진에 컨테이너를 생성합니다. 하지만 호스트 머신에서 도커 엔진을 구동하다가 CPU, 메모리 같은 자원이 부족하다면 여러 방법이 있겠지만 가장 많이 사용하는 방법이 여러대의 서버를 클러스터로 만들어 자원을 병렬로 확장하는 것입니다. 그러나 여러대의 서버를 하나의 자원 풀로 만드는 것은 쉬운 작업이 아닙니다. 새로운 서버나 컨테이너가 추가됐을 때 이를 발견하는 작업부터 어떤 서버에 컨테이너를 할당 할 것인가에 대한 스케줄러, 로드밸런서, 클러스터 내의 서버가 다운됐을 때 고가용성을 어떻게 보장할지 등이 문제.. 2023. 12. 13.
6. 네트워크 용어 & VPC 웹 서버는 어디에 존재하는 것일까? 웹 서버는 데이터 센터에 있을 수도 있고, AWS와 같은 클라우드 서비스에 있을 수도 있다. 웹 서버에 접근하기 위해서는 웹서버가 그곳에 있다는 특정 정보가 필요하다. 이것이 IP 주소다. 웹 사이트에 접속할 때는 이 IP 주소를 바탕으로 위치를 특정해 그곳에 있는 웹 서버에 접속한다. 일반적으로 IPv4가 표준으로 사용된다. 192.168.1.1 은 각각 0~256의 범위를 가지고 IPv4는 주소가 2^32개, IPv6는 2^128개 존재한다. 퍼블릭 IP 주소와 프라이빗 IP 주소 IP주소는 2가지로 구분할 수 있다. 하나는 한국 또는 전 세계에서 '이 주소는 인터넷에서 이곳'이라고 특정할 수 있는 주소다. 이를 퍼블릭 IP주소 또는 글로벌 IP주소라고 한다. 다른.. 2023. 12. 9.
5. 스토리지 서비스 Amazon S3는 데이터 저장 장소 Amazon Simple Storage Service(S3)는 AWS에서 제공하는 객체 스토리지 서비스다. 스토리지란 데이터를 저장하는 장소를 말하며 객체란 텍스트 파일이나 음성 파일 같은 데이터를 말한다. 객체 스토리지는 기존의 파일 스토리지처럼 폴더 구조는 갖지 않고 객체 키로 데이터를 고유하게 식별해 데이터의 입출력과 관리를 수행한다. 키만으로 데이터를 관리하기 때문에 간편하게 대용량의 데이터를 저장하고 관리할 수 있다. S3의 특징 1. 용량 무제한 -> 객체당 5TB라는 제약이 있지만 객체 수나 데이터 용량에는 제한이 없다. 2. 높은 내구성 -> 일반적으로 데이터가 3개 이상의 AZ로 복사된다. 복사를 통해 데이터의 내구성을 높여주며 AWS에서는 높은 내구.. 2023. 12. 8.
4. 컨테이너의 구조와 특징 이해 컨테이너는 어떤 응용 프로그램을 실행할지 미리 정의해둔 파일을 바탕으로 실행된다. 이것을 컨테이너 이미지라고 한다. 컨테이너의 가장 큰 특징 중 하나는 가상화에 비해 가볍고 빠르다는 것이다. 컨테이너에 포함된 것이 적기 때문이다. 가상 서버를 기동한다면 OS, 미들웨어, 응용 프로그램 등이 필요하다. 따라서 가상 서버 이미지에는 이러한 파일이 모두 포함된다. 반면 컨테이너는 응용 프로그램 프로세스만 시작된다. 컨테이너 이미지도 기본적으로 응용 프로그램을 실행하기 위한 의존성 패키지만 포함되므로 가상 서버에 비해 가볍다. 가상 서버는 일반 서버와 마찬가지로 OS -> 미들웨어 -> 응용 프로그램이 실행되지만, 컨테이너는 직접 응용 프로그램을 실행한다. 처리 역시 OS에 대한 오버헤드가 없는 만큼 가상 서버.. 2023. 12. 8.
6. 도커 데몬 지금까지 도커를 사용하는 방법에 대해 알아보았습니다. 가장 먼저 알아야 할 컨테이너부터 시작해서 컨테이너의 밑바탕이 되는 이미지, 이미지를 생성할 수 있는 Dockerfile을 알아보았습니다. 그렇다면 이제는 도커 자체를 다뤄볼 차례입니다. 도커 자체에 사용할 수 있는 여러 옵션을 익히면 컨테이너와 이미지를 좀 더 쉽게 사용할 수 있을뿐더러 도커를 이용한 개발이 수월해집니다. 도커의 구조 도커는 /usr/bin/docker 에 위치한 파일을 통해 사용되고 있습니다. 컨테이너와 이미지를 다루는 명령어는 /usr/bin/docker 에서 실행되지만 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행되고 있습니다. docker 명령어가 실제 도커 엔진이 아닌 클라이언트로서의 도커이기 때문입니다... 2023. 12. 7.
4. 질문 (Middleware) 미들웨어란, 운영 체제와 해당 운영 체제에서 실행되는 응용 프로그램 사이에 존재하며 분산 컴퓨팅 환경에서 컴퓨터와 컴퓨터간의 연결을 안전하고 용이하게 해주는 전반적 관리를 도와주는 소프트웨어입니다. 응용소프트웨어가 운영체제로부터 제공받은 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어입니다. 다시 말해, 서로 다른 기종의 하드웨어나 프로토콜, 통신환경 등을 연결하여, 응용프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어를 말하며, 특정 정보 시스템 환경에서 작동할 수 있도록 지원해주는 역할을 한다고 이해할 수 있습니다. OS는 기본적인 기능 밖에 없기 때문에, 단독으로 할 수 있는 일은 많지 않습니다. 미들웨어가 있으면 복잡한 처리가.. 2023. 12. 6.
3. 컴퓨팅 서비스(하) 서버 자동 추가 및 제거 Amazon Ec2 Auto Scaling 기능을 사용하면 서버 추가 및 제거를 부하 상황에 맞게 수행할 수 있다. 서버를 추가하는 것을 스케일 아웃, 제거하는 것을 스케일 인이라고 한다. CPU사용률에 맞춰 서버를 추가하거나 CPU를 추가할 수 있다. 시작 템플릿에 AMI 정보와 서버가 추가될 조건을 설정하면 조건에 맞춰 서버가 자동으로 추가된다. 목표 사용률을 지정해 지정한 값을 유지하게끔 인스턴스 수를 자동으로 조절하는 대상 추적 조정 정책이라는 기능도 있다. 예를 들어 평균 CPU 사용률을 50%가 되도록 목표를 지정하면 대상 추적 조정 정책은 CPU 사용률을 감시해 50%를 넘으면 인스턴스를 추가한다. 반대로 CPU 사용률이 많이 내려가면 인스턴스를 줄인다. 서버 자원의.. 2023. 12. 6.
2. 컴퓨팅 서비스(상) AWS뿐 아니라 어떤 시스템에서도 반드시 있어야 하는 것이 시스템 처리를 실행할 컴퓨터이다. AWS에서는 가상 서버인 EC2와 컨테이너 서비스인 ECS 등 폭 넓은 컴퓨팅 서비스를 제공한다. 네트워크를 데이터나 서비스를 제공하는 컴퓨터를 서버, 그 서비스를 이용하는 프로그램을 클라이언트라고 한다. 예로 웹 사이트를 제공하는 컴퓨터가 서버고, 웹 브라우저가 클라이언트다. 웹 서버 웹 서버는 웹 페이지 자체의 구조를 만드는 HTML 파일과 디자인을 정의하는 CSS 파일, 사이트에 표시되는 이미지 파일 등 서비스 제공에 필요한 데이터가 저장된다. 웹 사이트를 구성하는 데 필요한 데이터를 저장하고 시스템을 제어하는 프로그램을 설치한 서버를 웹 서버라고 한다. AWS에서 웹 서버를 구축하는 경우 EC2와 ECS로.. 2023. 12. 5.
1. AWS 기초지식 AWS는 Amazom.com에서 운영하는 클라우드 서비스이다. 어떠한 시스템을 구축하기 위해서는 컴퓨터와 DB 같은 기능이 필요한데, 이런 기능을 인터넷을 통해 이용할 수 있게 해주는 서비를 클라우드 서비스라고 한다. AWS처럼 누구나 사용할 수 있는 클라우드를 개방형 클라우드라 한다. 이외에 구글에서 운영하는 GCP, Microsoft Azure 등이 있다. 온프레미스란 사용자가 관리하는 시설 내에 서버 등의 기기를 설치해 운용하는 환경이다. AWS와 같은 클라우드 서비스가 등장하기 전에는 정보 시스템을 구축하기 위해 자체적으로 관련 기기를 준비하고 설정해야 했다. 이런 기기를 설치하고 운영하는 시설을 데이터 센터라한다. 클라우드는 클라우드 서비스 제공자가 서버 등의 기기를 준비하고 거기에 구축된 가상.. 2023. 12. 5.
Kruskal vs Prim 신장 트리란? 그래프의 모든 정점과 간선의 부분 집합으로 구성되는 트리를 말합니다. 사이클이 안 생기는 조건 안에서 간선의 개수를 정점 - 1개로 골라 만드는 것으로, 정점 - 1의 수가 간선의 수가 되는 트리입니다. 최소 비용 신장 트리란? 신장 트리 중에서 간선들의 합이 최소인 트리입니다. 또한 무향 가중 그래프에서 만들어질 수 있고 사이클이 발생되지 않으며 비용의 합이 최소인 트리입니다. 최소 비용 신장 트리의 특징 무방향 가중치 그래프입니다. 가중치의 합이 최소입니다. 정점 n개에서 n - 1개의 간선을 가지는 트리입니다. 사이클이 포함되서는 안됩니다. 최소 비용 신장 트리의 사용 도로망, 통신망, 유통망 등 여러 분야에서 비용을 최소로 해야하는 경우에 유용하게 사용됩니다. 최소 비용 신장 트리를.. 2023. 12. 2.
5. Dockerfile 명령어 ADD vs COPY Copy는 로컬 디렉터리에서 읽어 들인 컨텍스트로부터 이미지에 파일을 복사하는 역할을 합니다. 사용하는 형식은 ADD와 같습니다. 하지만 COPY는 로컬의 파일만 이미지에 추가할 수 있지만 ADD는 외부 URL 및 tar 파일에서도 파일을 추가할 수 있다는 점에서 다릅니다. 즉 COPY 기능이 ADD에 포함되는 것 입니다. 그러나 ADD를 사용하는 것은 그다지 권장하지 않습니다. ADD로 URL이나 tar 파일을 추가할 경우 이미지에 정확히 어떤 파일이 추가될지 알 수 없지만, COPY는 로컬 컨텍스트로부터 파일을 직접 추가하기 때문에 빌드 시점에서도 어떤 파일이 추가될지 명확합니다. ENTRYPOINT vs CMD CMD는 컨테이너가 시작될 때 실행할 명령어를 설정합니다. 이는 d.. 2023. 12. 2.
3. 질문 (Proxy & SpringBoot) Proxy : 일종의 대리자. 개발할 때 특정한 Interface를 노출시키지 않고, 외부로부터 감추고 싶을 때 사용하는 것이 바로 Proxy 패턴입니다. 하지만 Spring에서 지원하는 Proxy와 디자인 패턴에서의 Proxy 패턴은 다릅니다. 일반적으로 Proxy는 실제 Target의 기능을 대신 수행하면서, 기능을 확장하거나 추가하는 실제 객체를 의미한다. Proxy 패턴은 Target에 대한 기능을 확장하지는 않고, Client가 Target에 접근하는 방식을 변경해준다. Proxy를 사용하는 이유는 OCP, SRP를 지키키 위해서 입니다. 프록시 패턴을 통해 프록시 코드를 구현할 수 있다. 쉽게 말해 1) 클라이언트가 타깃에 접근하는 방법을 제어할 때 예로 JPA의 지연로딩 2) 타깃에 부가적인.. 2023. 11. 30.
4.1 아키텍처 4.1.1 Mysql 전체 구조 (사실 아키텍처는 책의 4장이다. 1,2,3 장은 설치와 설정 및 사용권한이기에 가볍게 읽어보고 넘어가기로 했다.) Mysql 서버는 사람의 머리 역할을 담당하는 Mysql 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분할 수 있다. 손과 발의 역할을 담당하는 스토리지 엔진은 핸들러 API를 만족하면 누구든 스토리지 엔진을 구현해서 Mysql 서버에 추가해서 사용할 수 있다. 이번 장에서는 Mysql 엔진과 Mysql 서버에서 기본적으로 제공되는 InnoDB 스토리지 엔진, MyISAM 스토리지 엔진을 구분해서 볼 것이다. Mysql 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분할 수 있는데, 이 책에서는 Mysql의 쿼리파서나 옵티마이저 등과 같은 기능을 스토.. 2023. 11. 30.
1. JPA 소개 & 영속성 관리 객체 모델과 관계형 데이터베이스 모델은 지향하는 패러다임이 서로 다르다. 문제는 이 차이를 극복하려고 개발자가 너무 많은 시간과 코드를 소비한다는 점이다. 자바 진영에서는 오랜 기간 이 문제에 대한 숙제를 안고 있었고, 패러다임의 불일치 문제를 해결하기 위해 많은 노력을 기울였다. 그 결과물이 바로 JPA이며, 패러다임의 불일치 문제를 해결재주고 정교한 객체 모델링을 유지하게 도와준다. JPA(Java Persistence API) 자바 진영의 ORM 기술에 대한 API 표준 명세다. 애플리케이션과 JDBC 사이에서 동작한다. JDBC(Java Database Connectivity) Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 .. 2023. 11. 30.
4. Dockerfile 빌드 이미지 생성 3장에서 Dockerfile이 생성되는 과정을 확인해볼게요. (test.html, Dockerfile 위치는 예로 ./) [1. 빌드 컨텍스트] || || V docker build -t mybuild:0.0 ./ --------> FROM ubuntu ~~ ---------> myapp:0.0 (4. 새로운 이미지) (2. 디렉터리: ./) RUN apt-get update (3. 도커 이미지) 이미지 빌드를 시작하면 도커는 가장 먼저 빌드 컨텍스트를 읽어 들입니다. 빌드 컨텍스트는 이미지를 생성하는 데 필요한 각종 파일, 소스코드, 메타데이터 등을 담고 있는 디렉터리를 의미하며, Dockerfile이 위치한 디렉터리가 빌드 컨텍스트가 됩니다. 빌드 컨텍스느는 DockerFile에서 빌드될.. 2023. 11. 30.