전체 글 55

AWS EC2에 MySQL 배포하기

도커 컴포즈로 서버랑 같은 컴퓨터에 DB를 띄우려고 씨름하다가, 내가 왜 확장성도 없이 이런짓을 하나 싶어서 DB를 별도 인스턴스로 분리하기로 결정했다. 그리고 DB 설정 오류 잡는데에 3일이 걸렸다.한번 설정 꼬이면 에러가 산으로 가서 인스턴스를 몇번을 지웠다 만들었는지 모르겠다.삽질을 하며 알아낸 것은 아래 스텝을 무조건 지켜야한다는 것이다. 1. EC2 인스턴스 생성Amazon Linux 쓰면 괜히 꼬이는 것같아서 ubuntu 이미지를 사용하였다.그리고 도커를 사용할 계획이라면, t2.small 이상을 선택해야 시스템 오버헤드를 감당하는 것 같다. 좀 내리면 네트워크 설정이 나오는데, 우측 상단의 편집을 눌러서 인바운드 / 아웃바운드 모두 IP, 주요포트를 열어주자. 인바운드 주요포트- 22 : 우..

프레임워크/AWS 2025.03.27

[카카오 2024] 산 모양 타일링 python

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/258707공식 해설 : https://tech.kakao.com/posts/610 문제 설명세모를 쌓아 만든 산모양 타일이 있다.각 산에는 머리(△)가 있을 수도 있고 없을 수도 있다.tops[i] = 0 이면 i번째 산은 머리(△)가 없고, tops[i] = 1 이면 i번째 산에 머리(△)가 있는 것이다.위 그림같은 경우 n = 3, tops = [1, 1, 0, 1] 로 입력값이 주어진다.  이 타일을 마름모 모양 타일과 정삼각모양 타일 두가지로 덮는 경우의 수를 구하면 된다. 각 타일은 회전할 수 있다. 해법처음엔 재귀로 완전탐색을 해볼까 했는데, 각 방법이 유일하다는걸 증명하려면 지도..

Context 없이 테스트 하기 : mockito 사용 예시

테스트가 어려웠던 이유 - 종속성 관리별로 어렵지 않은 경우 바로 아래로 가시면 됩니다.더보기더보기나의 경우 테스트를 선뜻 시작하기 어려웠던게 mocking이 가능하다는걸 몰랐기 때문이었다. 아래처럼 HiService라는 복잡한 클래스가 있다고 해보자.유저 이름을 넣으면 그 이름을 넣은 인사카드 gif 이미지를 반환하는 그런 서비스다.class HiService( // 특징 : DB에서 UserEntity를 불러온다. private val userRepository: UserRepository, // 특징 : UtilBean에 method가 백개쯤 있음 곧 분리될 예정 private val utilBean: UtilBean, // 특징 : API 호출 건수대로 돈받는 유료 ..

도서추천 : Kotlin in Action vs Effective Kotlin

Kotlin을 잘 사용하기 위해 읽을 도서를 찾다보면 위 두가지 책이 반드시 등장한다.사실 한 언어에 대한거라 내용이 비슷하지 않을까 했는데, 확연한 차이가 있다.두 책을 모두 읽기엔 시간이 부족한 사람들에게 도움이 되었으면 좋겠다. Kotlin in Action : Java와의 관계를 이해할 수 있게됨이 책은 intellij 소속 코틀린 컴파일러 개발자들이 쓴 책이다.코틀린은 컴파일 이후 JVM에서 해독할수 있는 형태의 Java byte code를 생성하는데,언어 개발자들이 쓴 책 답게 각 Kotlin 문법이 자바의 어떤 문법과 일치하는지 세세하게 알려준다.코틀린 환경에서 자바 라이브러리를 참조할 때는 큰 문제가 없지만, 자바 환경에서 코틀린 라이브러리를 사용할 때 byte code 변환 규칙을 이..

독후감/완성본 2025.01.03

AWS ECR로 개인 repository에 도커 이미지 관리하기

Docker는 컨테이너를 만들어내는 이미지라는 틀을 가지고 있다.그리고 모든 이미지는 Docker hub에 'docker push' 명령어로 올려서 모두와 공유할 수 있다.하지만 이미지를 우리 팀만 써야하는 경우라면 Github에서처럼 private repository가 필요해진다.도커에 돈을내고 private repository를 만들수도 있지만, 프리티어가 적용되는 AWS ECR이라는 대안도 있다.ECR에 이미지를 올리고, 또 다운받는 과정을 정리해보았다. 1. 개발 컴퓨터에서 이미지 빌드하기docker build --platform linux/amd64 -t 이미지이름:태그 실행위치먼저 위 명령어로 이미지를 생성한다. 각 옵션과 아규먼트를 자세히 설명하면 아래와 같다. -t : 이미지의 이름과 태그..

프레임워크/AWS 2024.12.23

AWS Elastic BeansTalk 삭제 후에도 요금 청구되는 경우

Elastic Beanstalk (aka EBS)는 백엔드 배포를 위한 AWS 자원을 자동으로 생성하여, 신속한 배포를 돕는 서비스이다.EBS 자체에는 요금이 청구되지 않지만, 얘가 생성하는 AWS 자원들이 매우 비싸고, 프리티어 적용이 안되기 때문에 요금이 부담되는 경우가 있다. 문제는, EBS 콘솔에서 삭제를 누른다고 해도 관련 자원들은 삭제가 되지 않아 요금이 계속 올라간다.이런 경우 직접 자원을 정리해줘야하는데, 그 방법에 대해 정리해보려고 한다. 1. 청구서에서 자원 종류 및 region 확인우측 상단의 내 계정 정보를 누르고, '결제 및 비용관리'로 들어간다.  그럼 이렇게 총 요금이 보이지만, 어디서 요금이 발생했는지는 알수 없다.좌측 탭에서 '청구서'를 누르거나 스크롤을 내려보자. [+] ..

프레임워크/AWS 2024.12.23

Dockerfile에서 bash 명령 사용하기 | RUN, CMD, ENTRYPOINT 차이

도커는 이미지라는 틀을 만들고, 이를 사용해서 가상 머신을 만들어내는 식으로 동작한다.이때 이미지를 정의하기 위해 Dockerfile을 문법에 맞게 적어줘야하는데, 여기서 쉘 명령어를 사용하기가 여간 까다롭지 않다.도커파일에서 쉘 명령어를 입력하는 형식과, 사용할 수 있는 커맨드의 종류 두가지를 모두 정리해보았다. 1. Shell form과 exec formDockerfile 예시를 읽다보면 똑같은 일을 하는 명령을 두가지 방법으로 적어놓은 것을 볼 수 있다.FROM centos:7# 컨테이너 실행 직후 컨테이너에 running... 이라는 문구를 두번 출력한다.CMD "echo 'Hello from shell form!'; exec bash" # shell formCMD ["/bin/bash", "-c..

SSL 작동 방식 및 필요성 이해하기

SSL 보안의 필요성'공개키 암호화 방식 이해하기'에서 알아보았듯이, 인터넷을 통해 전달되는 모든 정보는 다른 컴퓨터가 읽을 수 있다. (이제부터 도청이라고 부르겠다) 따라서 아무도 읽지 못하도록 암호화하는 것이 중요했다. 그런데 중요한 정보를 훔치는 데에는 도청 말고도 수많은 방법이 있다. 한가지 방법은 정상 서버에 가짜 유저가 요청을 보내는 것이다. 이것은 서버측에서 사용자 인증을 강화해서 해결할 수 있다.또 다른 방법은 가짜 서버를 만들어서 정상 유저가 입력하는 모든 정보를 갈취하는 것이다. 입력하는 정보가 아무리 암호화되어있다고 해도, 가짜 서버에서 복호화 될 수 있는 형태라면 결국 그 정보는 도난 당하게 된다.따라서 요청을 보낼 곳이 내가 접속하고싶은 서버가 맞는지 확인하는 과정이 아주 중요하다..

CS 지식 2024.12.13

공개키 암호화 방식 이해하기

HTTPS 암호화에도 활용되는 공개키 방식(aka 비대칭키 방식) 암호화란 무엇일까?그리고 애초에 왜 암호화는 왜 필요한걸까? 이 두가지 이유에 대해 알아보자. 암호화의 필요성인터넷은 정보를 목적지로 보내기 위해서 그 사이에 있는 다른 컴퓨터를 반드시 거치게 된다. 그리고 전달하는 내용은 그 경로에 해당하는 모든 컴퓨터가 다 볼 수 있다. 애초에 인터넷은 군사 목적으로 개발 되었기 때문에 해당 네트워크에 악의적인 사용자가 한명도 없다는 가정을 하고 개발되었다.따라서 여러 컴퓨터에 거쳐 패킷을 전달해서, 확장에 유리한 구조를 만드는 것을 반대할 이유가 없었다. 누군가 내가 보낸 내용을 읽더라도, 다 우리 군대 소속이니까 상관이 없었기 때문이다.하지만 인터넷이 대중에게 공개되면서, 통신 내용을 타인이 읽을 ..

CS 지식 2024.12.12

99클럽 코테 스터디 15일차 TIL | 백준 미로만들기 풀이, 최소비용과 BFS

문제 바로가기 : https://www.acmicpc.net/problem/2665 그림과 같은 N x N 미로가 있다. 빈방은 흰색(1), 벽은 검은색(0)이다.(0, 0)에서 시작해서 (n-1, n-1)로 가기 위해 최소 몇개의 벽을 뚫어야하는지 구하는 문제이다.한 변의 길이 N은 1 이상 50이하이고, 실행 제한시간은 1초이다.  처음에는 모든 경우의 수를 모두 돌아보되, 가능성이 없는 경로는 빠르게 쳐내기 위해 DFS로 빠르게 최소비용을 구하고자했었다.쓸데없이 경로를 꼭 알아야한다고 생각을 했던것...그렇지만 우리 문제는 어떤 경로를 사용했는지가 중요한 문제가 아니라서, BFS로 미로를 돌며 (0, 0)에서 임의의 (x, y)로 가려면 얼마의 비용이 드는지 구하는 것으로 방향을 틀었다. 전체 구현..