목록전체 글 (32)
gloryyam 님의 블로그
1) 소켓 통신(Socket Communication)💡 소켓통신- 소켓통신은 두 컴퓨터가 네트워크를 통해 '실시간 양방향 통신'을 제공하는 기술을 의미합니다. 좀 더 쉽게 설명하면 인터넷에서 컴퓨터들은 데이터(정보)를 주고 받아야 합니다. 예를들어 상대방이 카톡을 보낼 때 ⮕ 내 폰으로 도착해야 하고, 온라인 게임에서 내 캐릭터가 움직이면 ⮕ 서버가 그걸 알아야 합니다. 이런 식으로 실시간으로 주고받는 통신을 가능하게 해주는 것이 '소켓통신'입니다. ※ 소켓은 운영체제의 네트워크 계층과, 전송 계층(TCP/UDP) 위에 동작하며, 응용 프로그램은 이 소켓을 통해 네트워크 자원에 접근할 수 있습니다. 2) 소켓의 구조🧩 소켓은 다음 정보를 기반으로 통신 상대를 식별합니다. 구성 요소 설명IP 주..
HTTP 프로토콜 HTTP( Hypertext Transfer Protocol )는 웹에서에서 데이터를 주고 받기 위한 서버-클라이언트 모델의 프로토콜입니다. 쉽게 말해서 웹에서 브라우저가 서버와 통신하기 위한 규칙. HTTP 통신 방법의 대해서 간단하게 알아보면, 먼저 사용자가 웹사이트의 방문하면 브라우저가 웹서버로 리소스를 요청합니다. 웹서버는 HTML, CSS와 같은 리소스를 응답으로 돌려줍니다. 이 모든 과정을 TCP를 통해 안정적으로 이뤄집니다. 그리고클라이언트의 요청과 응답 사이에는 프록시 서버가 존재하여 통신을 돕거나 제어할 수 있습니다. HTTP 구조[Start-Line][Headers](blank line)[Body] HTTP 흐름 1. TCP 연결을 엽니다. TCP 연결은 요청을 보내..
첫 회사, 첫 개발 커리어, 그리고 첫 장애 대응첫 회사에서 첫 개발 커리어를 시작하면서 예상치 못한 일이 벌어졌습니다.사실 저는 신입으로 입사한 지 얼마 되지 않았고, 기존 담당자가 급하게 퇴사하면서 제가 그 역할을 맡게 되었습니다. 그래서 솔루션 담당자가 된 것도 사실은 상당히 황당한 상황이었죠... 인수인계도 일주일밖에 없었고, 저는 어쩔 수 없이 그 솔루션을 책임지게 됐습니다.. 기억이 나네요, 본부장님이 저에게 해주신 말이..."신입인데 이렇게 혼자 맡게 되어 미안하지만, 솔루션에 큰 문제가 없으면 고객사에서 연락이 오지 않으니 크게 신경 쓸 필요는 없을거다 걱정하지 말라"며 위로를 해주시더라고요. 저는 몰랐습니다. 본부장님의 말이 이번 사건의 플래그였단걸요.. 그렇게 저는 다른 프로젝트에도 투..
개발자로 일하면서 한 번쯤은 자동화된 배포 시스템 즉, CI/CD에 대해 들엉본 적이 있을 것입니다.현재 회사에서도 직접 파일을 서버로 옮긴 뒤 실행하거나, 간단하게 쉘 스크립트로 자동화 한것이 다 였던 터라, 자동 CI/CD에 대한 궁금증이 많았는데 이번에 CI/CD 파이프라인 구축을 한 번 해보기로 했습니다..!! 다만, 이 글에서는 CI 보다는 CD에 초점을 맞춘 점을 미리 말씀드리겠습니다.!! 어떻게 배포할 것인가?Github Action + Docker + Docker Compose + AWS EC2 Jenkins와 같은 CI/CD 툴들이 많은데 Github Action을 선택했습니다, 이유는 다음과 같습니다. Docker Compose를 통해서 프로그램들과의 연계를 수월하게 가져갈 수 있습..
최신 버전의 AWS CLI설치 또는 업데이트 - AWS Command Line Interface (amazon.com) 최신 버전의 AWS CLI설치 또는 업데이트 - AWS Command Line Interface이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이docs.aws.amazon.com 맥 (Mac OS)$ brew install awscli$ aws --version # 잘 출력된다면 정상 설치된 상태 윈도우 (Window) 이 링크(https://awscli.amazonaws.com/AWSCLIV2.msi)를 다운받아 설치하기cmd를 실행시켜서..
# syntax=docker/dockerfile:1FROM ubuntu:latestRUN apt-get update && apt-get install -y build-essentialsCOPY main.c Makefile /src/WORKDIR /src/RUN make build 레이어가 변경될 때마다 해당 레이어를 다시 빌드해야 합니다. 예를 들면 스프링 프로젝트에서 코드를 변경하면 다시 실행해서 빌드해야 하듯이 말입니다..!! 단, 모든 줄마다 레이어를 만들지는 않고 파일 시스템에 변화가 생기는 (ex. ADD, COPY, RUN)경우에만 이미지 레이어를 생성합니다. Docker CacheDocker 빌드 시 매번 모든 레이어를 빌드하면 속도가 느려질 수 있습니다. 이를 해결하기 위해 Docker..
1. 간단한 코드 작성 @RestControllerpublic class TestController { @GetMapping public String home() { return "Hello World"; }} 2. Dockerfile 작성하기FROM openjdk:17-jdkCOPY build/libs/docker-test-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"] 3. 프로젝트 빌드하기 $ ./gradlew clean build 4. Dockerfile을 바탕으로 이미지 빌드하기 $ docker build -t testBuild-server . 5. 생성한 이미지를 컨테이너로 실행시키기$ docke..
[ 에러 ] Spring Boot를 Docker로 실행시키기 위해서 ./gradlew clean build 명령어 입력했지만 에러가 발생했습니다. 보시면 자바 17버전을 사용해야 되는데 ubuntu 환경에서 자바 버전을 8버전을 사용 중이라 에러가 발생했습니다. [ 해결 방안 ]자바 버전을 바꿀 수 있는 방법을 2가지 알려드리고자 합니다. # 기본적으로 필요한 자바 버전을 다운로드 받으셔야 합니다.!!$ sudo apt update$ sudo apt install [자바 버전] 1. update-alternatives --config java자바 버전을 다운로드 받은 뒤 update-alternatives --config java 명령어를 입력하면 다운로드 받은 jdk 버전이 모두 나옵니다.원..