이전 글에선 도커 이미지 빌드와 Compose에서 로컬 환경 실행에 그쳤다면,이번에는 실전으로 들어가 AWS EC2 실제 서버 배포 + AWS RDS 연동 두 가지를 동시에 시도했습니다. 우선 AWS RDS Free tier에 맞는 데이터 베이스 인스턴스 생성 RDS도 하나의 서버입니다.기존 EC2와 동일하게 서버 간의 연결에 신경쓰려면 딱 두가지를 신경쓰면 됩니다. 1) 접속할 IP와 PORT에 대한 인바운드 보안 규칙 설정 2) 서버의 EndPoint (+PORT 이 경우 5432) 그 외에서 신경 쓰일 일은 없었습니다.데이터 베이스에 접근할 유저와 비밀번호를 잘 기억해서 환경변수에 적어주는 것 정도? 이제 이 DB에 접근할 IP에 대해 인바운드 규칙을 설정 해주겠습니다.(가운데는 본인 IP니 무시해..
전체 글
이전 블로그 https://velog.io/@go_high/posts최근에 기회가 되어 웹개발 동아리의 면접관으로 들어가게 됐습니다. 저도 부족하지만 최대한 집단에 기여할 수 있고 성장 가능성이 높은 분들을 찾기 위해 노력했던 것 같습니다. 면접 과정에서 좋은 평가를 줬던 면접자들은 대게 본인이 공부한 내용을 남에게도 설명할 수 있었습니다.공부를 위한 공부, 학점을 위한 공부라기보다, 지식으로 본인에게 정립된 느낌? 반면 '나 밤새면서 열심히 했다' 만을 주장하는 분들에겐 좋은 점수를 주지 못했습니다. 그렇게 열심히 공부했지만 명확히 설명을 할 수 없다는 점이 제가 느끼기에는 공부에서 방향성이 잘못됐다고 느꼈습니다. (물론 떨려서 순간 대답을 못하셨을 수도 있습니다.) 저도 후자같은 지원자가 되고 싶지 않아 제가 배운 운영체제를 제 나름으로 정의해보려 합니다. 그래서..
사실 안쉬움 뭔가 가상환경 속에서 커맨드만을 이용해 예측하는 기분이 들었습니다. 이전 도커 파일에선 하나의 이미지만을 빌드 후 실행했다면, 이번에는 두 이미지 (스프링 + PostgreSql)를 도커로 합쳐서 한 컨테이너에 띄우는 작업을 진행합니다. 우선 기존 도커파일은 그대로 유지합니다. FROM openjdk:18-ea-jdk-slimVOLUME /tmpCOPY build/libs/demo-0.0.1-SNAPSHOT.jar codingtest-service.jarENTRYPOINT ["java","-jar","codingtest-service.jar"] 이제 docker-compose.yml 파일을 dockerfile과 동일한 위치에 생성합니다. (사실 Docker 쪽만 다룬 폴더를 만들수 있으나..
폴더 최상위에 Dockerfile 생성 springboot를 의존성에 추가했을 경우, bootJar을 클릭하여 JAR 파일 생성이때 생성된 build/libs/~~.jar 파일 앞서 생성한 도커파일에 커맨드 작성FROM openjdk:18-ea-jdk-slimVOLUME /tmpCOPY build/libs/demo-0.0.1-SNAPSHOT.jar codingtest-service.jarENTRYPOINT ["java","-jar","codingtest-service.jar"] FROM은 오픈소스 자바 VOLUME은 스프링부트가 위치할 rootCOPY는 지정된 경로의 jar파일을 container에 복사ENTRYPOINT 복사한 jar파일 실행 그럼 이제 도커파일을 이미지화 한다. 명령창에서 "co..
문제 접근 가장 긴 증가하는 부분 수열1에서 N 조건이 크게 증가한 문제입니다. N이 10**6이므로 시간복잡도 N^2의 경우 꿈도 꿀 수 없습니다.사실 처음엔 기존에 풀었던 스카이라인 문제처럼 스택을 이용해야 하나? 라는 생각으로 접근했는 데, 위치 정보(특히 가장 최근의 정보)를 사용할만한 그렇다할 이유가 없었습니다. 그래서,, 알고리즘 분류라는 힌트를 봤더니 이분탐색을 사용해야 한다고 하더군요. N*logN 풀이 인것은 알고 있었습니다만, 이걸 바탕으로 이분 탐색이라는 풀이 방법을 생각해내진 못했습니다. 각설하고, 이분탐색을 어떻게 이용해야 할까? 저 같은 경우 풀이를 할 때, 극단적인 케이스에서 풀이 방법을 도출하는 걸 좋아하는 데 이번 문제의 경우10 20 1 2 3 30 이라는 케이스를 ..
스프링의 SOLID 원칙 SOLID 원칙 SRP (Single Responsibility Principle): 단일 책임 원칙 OCP (Open Closed Priciple): 개방 폐쇄 원칙 LSP (Listov Substitution Priciple): 리스코프 치환 원칙 ISP (Interface Segregation Principle): 인터페이스 분리 원칙 DIP (Dependency Inversion Principle): 의존 역전 원칙 대표적인 객체지향언어 기반의 스프링 핵심으로 여겨지는 원칙이다. 스프링은 객체지향 언어인 자바를 어떻게 활용할까? SRP - 각 클래스(객체)는 단 한가지의 책임 만을 갖는다. 하나의 클래스는 하나의 기능만을 담당한다. 만약 한가지 객체에서 다른 클래스의 코드..
플랫폼 옮기는 이유 지난 8월부터 벨로그를 반년간 운영하였으나, 통계도 빈약하고 유저자체도 부족해서 소통한다는 느낌이 없었다. 혼자서 발표하고 덩그러니 놓인 기분. 그래서 그런 지 글들도 정돈되지 않아서 나중에 내가 다시 봤을 때나 남들이 볼 때 별 도움이 되지 않을 것 같았다. 티스토리에서 나 외의 타인이 본다는 생각으로 작성해야 더 정돈되고 보기 좋은 글이 될 것 같아서 이용하려고 한다. 앞으로 내가 배우고 알게 된 것에 대해 남에게 핵심을 명료하게 이해시킬 수 있는 글을 작성하도록 하겠다. 앞으로 글을 더 정돈하여 작성할 것 관련한 개념을 모르거나 헷갈리는 사람이 봤을 때도 도움을 줄 수 있는 글을 작성하고 대체로 그 틀은 새로 알게된 것에 대한 요약, 느끼고 배운 점 위주로 짤 생각이다. 벨로그 ..