전체 글

전체 글

    도커의 구조를 간략하게 알아보자

    다섯줄 요약 도커의 구조는 크게 클라이언트/서버 두가지로 나뉜다. 사용자가 docker version과 같은 도커 명령어를 입력하는 것은 도커 클라이언트를 이용하는 것이다. 입력한 도커 명령어는 소켓을 이용해 도커 데몬(도커 서버)에게 명령어를 전달한다. 도커 데몬은 명령어를 파싱해 해당하는 작업을 수행하고, 도커 클라이언트에게 결과를 반환한다. 도커 클라이언트는 전달받은 결과를 사용자에게 출력한다. 도커는 클라이언트로서의 도커와 서버로서의 도커로 나뉜다. 실제 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작한다. dockerd: docker daemon 도커 데몬은 API 입력을 받아 도커 엔진의 기능을 수행한다. 이 때, 사용자가 이 API를..

    Cloudwatch 이상 지표를 슬랙 알람으로 받기

    이 글에서는 Cloudwatch 이상 지표를 슬랙 알림으로 받는 것을 설정하면서 얻었던 팁 및 주의점을 작성하기 위한 포스팅이므로, 실제 연동하는 방법은 jojoldu님의 블로그 링크로 대체한다. (jojoldu 님의 블로그에 매우 자세히 나와있다.) 블로그 링크는 글 하단 레퍼런스에 작성해두었다. jojoldu님의 블로그를 읽으면서 사소한 부분이나 놓칠 수 있는 부분을 주의점으로 남겨놓았기에 글 맨 아래 레퍼런스를 읽기 전 미리 확인하고 가면 도움이 될 것이라고 생각한다. Cloudwatch 이상 지표를 슬랙 알림으로 전송 시 주의할 점 Lambda 권한이 있거나, IAM 권한이 있는 경우에만 가능하다. 이 권한이 없으면 EMAIL 알림만 가능하다. (SNS를 표준으로 생성하여) 권한이 없다면 개인 계..

    용어 정리

    NAT란? NAT (Network Address Translation) IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술 왜 NAT를 이용할까? 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용해서 인터넷에 접속하기 위함 IPv4의 주소 부족 문제를 해결하기 위한 방법으로 고려되었으며, 주로 사설 네트워크 주소를 사용하는 망에서 외부의 공인망과의 통신을 위해서 네트워크 주소를 변환하는 것 공인망과 사설망 사이에 방화벽을 설치해 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용할 수 있다. 왜? 외부와 연결하는 라우터에 NAT를 설정할 경우 라우터는 자신에게 할당된 공인 IP 주소만 ..

    Access Token과 Refresh Token

    https://seovalue.github.io/2021/10/10/access-token-and-refresh-token/ Access Token과 Refresh Token - Milestone | Joanne Blog Access Token과 Refresh Token 기존 AccessToken만을 이용해 구현한 흐름은 다음과 같다. seovalue.github.io 블로그 이전 중입니다 :)

    EmbeddedRedis M1 Mac에서 사용하기

    https://seovalue.github.io/2021/10/09/embedded-redis-with-m1/ EmbeddedRedis를 M1 Mac에서 사용하기 - Milestone | Joanne Blog EmbeddedRedis를 실행하면 Can’t start redis server. 라는 에러가 뜬다. seovalue.github.io 블로그 이전 중입니다 :)

    내도메인.한국을 사용할 때 유의할 점

    할당된 도메인은 3개월간 사용 가능하다. 3개월이 지나면 새로운 도메인을 발급받아야한다. 따라서 기간에 유의하여 사용해야한다. kro.kr을 사용할 때 letsencrypt 발급 관련 오류가 발생하는 경우가 있다. 이 때, 저녁/새벽 시간에 하면 될 때도 있다.. A레코드에 연결할 IP를 작성하면 DNS에 해당 도메인과 ip의 정보가 등록되어, 도메인으로 접속이 가능해진다. TLS 관련 설정을 할 때, TXT란을 이용하여 사용할 수 있다. TXT는 또한 구글 검색에 노출되는 용도로서 발급받은 값을 작성하여 식별값으로 이용할 수 있다. CNAME은 말그래도 별칭을 나타낸다. 해당 무료 도메인과 연결될 또다른 도메인이나 ip를 입력할 수 있다. 추가적으로 A레코드는 여러개를 등록할 수 있다. 서브도메인과 관..

    [Letsencrypt] 인증서 갱신 에러

    계기 letsencrypt 인증서는 3개월 단위로 만료되기 때문에 재발급을 필요로한다. 따라서 letsencrypt를 사용하고 있는 프로젝트의 인증서를 정기적으로 재발급해주기 위해 crontab과 certbot을 이용하려 한다. 인증서 갱신을 하려고 하는데, 다음과 같은 문구가 뜨면서 인증서 갱신이 실패한다. Attempting to renew cert (cert-test.p-e.kr) from /etc/letsencrypt/renewal/cert-test.p-e.kr.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration. The erro..

    [우아콘2020] 수십억건에서 QueryDSL 사용하기 정리

    발표자: 이동욱님 영상링크: YouTube 이 글에서 나오는 이미지는 모두 발표 영상에서 가져온 이미지입니다. 발표 주제: QueryDSL & JPA 개선 팁 specific MySQL 5.6버전에서 진행함 why? 인덱스 컨디션 푸시다운과 서브쿼리의 최적화가 진행되어있기 때문에 버전별 차이가 있을 수 있다. 워밍업 extends/ implements 사용하지 않기 꼭 무언가를 상속/ 구현받지 않더라도, 꼭 특정 엔티티를 지정하지 않더라도 QueryDsL을 사용하는 방법이 없을까? JPAQueryFactory만 있으면 QueryDSL은 사용할 수 있다. 즉, extends/implements 없이 JpaQueryFactory만 생성자 주입을 통해 사용하면 쿼리디엣셀 관련 기능을 모두 사용할 수 있다. 동..

    [nginx] 413 Request Entity Too Large 오류

    Spring boot를 활용해 이미지 파일을 주고 받는 api를 구성하였다. 이 때, MultipartFile을 활용하고 yaml 파일을 이용해서 file 크기 등을 명시해주었었다. spring: servlet: multipart: file-size-threshold: 1MB location: C:/Temp max-file-size: 10MB max-request-size: 100MB enabled: true yaml 파일에 작성된 옵션과 관련된 자세한 내용은 여기를 참고하면 된다. 413 Request Entity Too Large 아무튼, 저렇게 10MB로 설정을 해 주었는데, 1MB 이상의 파일을 업로드하니 알 수 없는 에러가 발생했다. 메시지 내용은 별도의 ExceptionHandler가 없는 경..

    JDBC 라이브러리 구현하기 리뷰

    우아한 테크코스 4단계는 크루 간 리뷰를 주고받는다. 그 과정에 있어 이번 JDBC 라이브러리 구현하기 미션에서 받은 피드백들이 많은 생각을 하게 해주었던 터라 글을 남기게 되었다. 미션의 요구사항을 요약하자면 다음과 같다. 1단계 자바 진영에서는 애플리케이션의 DB 관련 처리를 위해 JDBC API를 제공한다. 문서를 참고해 JDBC API를 적용해보니 반복적인 DB 관련 작업을 수행하는 코드가 나타났다. 그리고 프레임워크를 사용하는 개발자 입장에서 매번 복잡한 코드를 작성하다보니 생산성이 떨어진다. 개발자는 SQL 쿼리 작성, 쿼리에 전달할 인자, SELECT 구문일 경우 조회 결과를 추출하는 것만 집중할 수 있도록 라이브러리를 만들자. 힌트 리팩터링은 UserDaoTest를 활용해 진행한다. 중복을..