목록전체 글 (276)
091
1. FastAPI- FastAPI란 파이썬으로 백엔드(API 서버)를 만드는 프레임워크입니다. 최근 기업들이 Django, Flask 대신 FastAPI를 선택하는 이유는 크게 세 가지입니다.-> 압도적인 성능 : 파이썬은 느리다는 편견을 깬 프레임워크예요. 비동기(ASGI) 기반 구조로 설계되어 대규모 동시 접속 처리에 강하고, 특히 AI 모델 API 호출처럼 대기 시간이 긴 작업에 최적화되어 있습니다.-> 최신 파이썬 문법(Type Hints)을 적극 활용 : 변수와 함수의 데이터 타입을 명시해서, 코드 에디터의 자동 완성을 지원하고 실행 중 에러를 미리 막아 줍니다.-> API 문서 자동 생성(Swagger UI 내장) : 코드를 작성하기만 하면 http://localhost/docs에 접속해서 ..
1. AWS에서 컨테이너를 다루는 서비스들 - 지금까지 만든 이미지는 내 컴퓨터(도커 엔진 안)에만 있었습니다. 다른 서버에서 이 이미지를 컨테이너로 띄우려면 이미지를 어딘가에 올려두고 그곳에 내려받아야 했고, 이전의 실습을 통해 가장 대표적인 이미지 저장소인 Docker Hub에 항상 올렸었습니다. -> Docker Hub는 공개 리포지토리이고, nginx나 mysql처럼 여러 기술에 맞는 기본 이미지를 여기서 찾을 수 있습니다. 우리가 docker pull이나 docker run으로 받아 쓴 이미지들이 바로 여기 있었던 것입니다. - AWS ECR(Elastic Container Registry)는 AWS에서 제공하는 이미지 저장소입니다. 기본은 비공개로, 공개하고 싶다면 Amazon ECR Publ..
[Docker] IaC(Infrastucture as Code) - Dockerfile1. IaC(Infrastructure as Code) - IaC(Infrastructure as Code)는 인프라 구축을 명령어를 하나씩 치는 방식이 아니라 코드(스크립트)로 작성해서 개발하는 방식을 말합니다. 이전 글에서 게속해오던 docker run 명in-ouput91.tistory.com*위의 글과 이어지는 글입니다.* 4. Docker Compose - 도커 컴포즈란 여러 개의 도커 컨테이너를 하나의 YAML 파일로 정의하고 한 번에 관리하는 도구입니다. 컨테이너마다 길게 docker run 명령어를 치던 것을 파일 하나로 정리하는 거예요. 지난 풀스택 실습에서 쳤던 긴 명령어 3개가 docker-compo..
1. IaC(Infrastructure as Code) - IaC(Infrastructure as Code)는 인프라 구축을 명령어를 하나씩 치는 방식이 아니라 코드(스크립트)로 작성해서 개발하는 방식을 말합니다. 이전 글에서 게속해오던 docker run 명령어를 직접 입력해서 컨테이너를 만들었다면, 이제는 그 과정을 파일에 적어두고 파일을 실행하는 방식으로 넘어가는 것입니다. - 커맨드 기반 인프라 구축은 사용자 실수 등의 인적 오류 가능성이 크고, 이렇게 환경 구축 과정을 코드로 적어 두고 자동으로 만드는 것을 프로비저닝(Provisioning)이라고 하는데, 도커에서 이 역할을 하는 파일이 Dockerfile입니다. 2. DockerFile - Dockerfile은 도커 이미지를 만들 때 필요한..
1. 도커 네트워크 - 컨테이너는 서로 격리된 공간이라서, 아무 설정이 없다면 다른 컨테이너와 통신할 수 없습니다. 하지만 실제 서비스에서느 프론트앤드, 백앤드, DB처럼 여러 컨테이너가 서로 통신을 해야하기 때문에, 이러한 컨테이너들을 연결해주기 위한 가상의 통로가 도커 네트워크입니다.-> 도커를 설치하면 기본적으로 docker0이라는 가상 이더넷 브리지가 만들어집니다. 별도 설정이 없으면 모든 컨테이너는 이 docker0 브릿지에 연결되어 IP 주소를 하나씩 할당받습니다. -> 위의 구성에도 나오는 도커 네트워크 구조를 소개해보겠습니다.• eth0: 컨테이너 내부에 만들어지는 기본 네트워크 인터페이스입니다. 컨테이너마다 하나씩 가지고 있고 연결된 브릿지와 같은 대역의 IP를 받습니다.• vethxx..
1. 컨테이너 볼륨 - 도커는 이전 글에서 말했다시피 유니언 파일 시스템을 사용합니다. 하나의 이미지로 여러 컨테이너를 만들 수 있고, 변경된 내용은 컨테이너의 쓰기 기능 레이어에 저장됩니다. 여기서 문제는 컨테이너 내부 데이터가 컨테이너 종료(삭제) 시에 함께 사라진다는 점입니다. 그래서 데이터를 영속적으로 유지하기 위해서는 도커 볼륨을 사용해야합니다.-> 서비스의 데이터와 로직은 분리되어야하고 컨테이너와 독립적으로 운영되기 때문에 컨테이너 삭제 시에도 볼륨은 함께 삭제되지 않습니다. 컨테이너에서 생성·재사용할 수 있고, 호스트 OS에서 직접 접근도 가능합니다. 다른 컨테이너로 언제든 옮겨 붙을 수 있기 때문에 운영자가 데이터를 안전하게 관리할 수 있습니다. - 볼륨(Volume)은 파일과 디렉터리를 ..
1. Jackson - Jackson은 Java 객체와 JSON 데이터를 서로 변환해주는 Java 라이브러리입니다. Java에서는 데이터를 객체 형태를 다루지만, HTTP 통신에서는 주로 JSON 형식으로 데이터를 주고받기 때문에 Java 객체와 JSON 사이의 변환이 필요합니다. -> Jackson은 이러한 변환을 자동으로 처리하여 Java 애플리케이션에서 JSON 데이터를 쉽게 주고받을 수 있도록 합니다. - Java 객체를 JSON으로 변환하는 것을 직렬화라고하며, 반대로 JSON을 Java 객체로 변환하는 것을 역직렬화라고 합니다. 이러한 처리가 필요한 이유는 Java 객체 자체를 네트워크를 통해 그대로 전달할 수 없기 때문입니다. Java 객체는 실행 중인 JVM의 메모리 공간에 존재하는 객체입..
1. JMM(Java Memory Model) - Java Memory Model(JMM)은 멀티스레드 환경에서 메모리의 변경 사항이 각 스레드에 어떻게 보이는지, 그리고 여러 메모리 연산 사이의 순서 관계가 어떻게 보장되는지를 정의하는 Java의 메모리 모델입니다. 멀티스레드 환경에서는 여러 스레드가 동시에 실행되며, 실제 실행 과정에서는 CPU와 메모리 시스템의 특성 등에 의해 한 스레드의 메모리 연산이 다른 스레드에서 동일한 방식으로 즉시 관찰된다고 단순하게 가정할 수 없습니다. 따라서 Java는 멀티스레드 환경에서 메모리 접근의 가시성과 연산의 순서 관계를 정의하기 위한 규칙으로 JMM을 제공합니다. Race Condition(경쟁 상태)1. Race Condition- 레이스 컨디션이란 둘 이..
