본문 바로가기

전체 글

(100)
Docker Compose with Github Action Troubleshooting name: Docker Compose CI/CD Pipeline# STEP1: Main Branch에 push 또는 pull request가 발생할 때 실행한다.on: push: branches: ['main'] pull_request: branches: ['main']jobs: # STEP2: SpringBoot_CI_CD_Pipeline이라는 Job을 실행한다. Docker_Compose_CI_CD_Pipeline: # 최신 버전의 Ubuntu에서 실행한다. # docker가 기본적으로 제공되는 환경 runs-on: ubuntu-latest steps: # STEP3: CI (1) 공식 Checkout Action을 사용해 저장소의 코드를 가져온다. ..
Error와 Exception + Java 개념 OOP(Object-Oriented Programming)의 4개의 요소 캡슐화, 상속, 추상화, 다형성 중캡슐화를 위해서 사용하는 것이 바로 접근제어자이다. 접근제어자의 필드, 메서드 단위에서의 사용에 있어서는 의외로 잘 적응했다고 생각했는데,class, interface 단위에서의 주의점이 하나 있어서 소개하고자 한다. 1. 예제아래와 같이 interface InputHandler와 OutputHandler를 한 개의 .java 파일에 정의하고이를 composition을 통해 구현하는 KioskIOHandler라는 Class가 있다고 하자.public interface InputHandler { String readInput();}public interface OutputHandler { ..
Spring, Spring Boot (3) Spring에서 ApplicationContext란 무엇인가?더보기ApplicationContext는 Spring 프레임워크의 IoC Container에서 Bean의 생성, 와이어링, Bean의 구성그리고 Bean과 객체들의 life Cycle을 관리하는 역할을 한다. Spring Bean 과 Servlet 각각 싱글톤으로 관리 된다고 하는데, 왜 그런지 상세히 설명하라더보기1. 대규모 엔터프라이즈 서버 환경은 서버 하나당 최대 초당 수십, 수백 씩 요청을 받는다.2. Spring MVC 구조는 요청에 대한 응답을 만들기까지 다양한 객체들이 참여하는 계층구조 그렇기에 요청이 올 때마다 각 로직의 객체를 새로 만든다면 서버의 부하가 심각➡️ 제한된 객체를 만들도록 싱글턴 사용 권장➡️ IoC방식 중 DI ..
Image 파일은 서버를 거치지 않아도 된다. 게시글을 업로드하는 기능을 구현하는 중에이미지 파일이나 영상 파일, 기타 pdf 파일 등을 업로드 할 때 서버에 어떻게 주어야 할 지를 생각하고 있었다.처음에는 blob을 통해서 파일을 blob형태( Binary large object ) 로 변환해서 서버에 직접보내고,서버는 이 데이터를 받아서 정적 서비스에 따로 저장하는 방식을 사용해야 할 줄 알았다. 그런데 그게 아니였다. github나 notion등 기타 마크다운 에디터들에서 어떻게 파일을 업로드 하는지계속 봐왔었는데, 자세히 보면 해당하는 파일을 직접 업로드하는게 아니라,파일을 올렸을 때,  해당 파일이 아니라, 몇 초 뒤에 내가 모르는 링크로 변환이 된다. 이미지 등 정적 파일에 대한 업로드의 형식이 어떤 식으로 진행되는지를 알아보자. 1. 일..
SPA 기능을 구현하는 웹 페이지의 CI/CD Pipeline 여태까지 소개했던 배포 방식은 순수하게 Spring boot를 통해WAS나 정적 페이지 혹은 어떻게 API를 구축하고 배포할지에 대한 내용이었다. 이제 여기에 프론트엔드의 작업물인 CSR 웹 페이지를 반환하고,여기에 API 까지 같이 구축하는 CI/CD 다이어그램를 구축해보면 아래의 그림과 같다.   기본적인 CI/CD의 흐름은 지난번 글들에서 소개한 Github Action을 사용한 CI/CD 파이프라인을 구축한 것과동일한데, 몇 가지 추가 사항 및 변동 사항이 있다. 1. AWS S3의 사용AWS는 정적 데이터를 제공하는 S3라는 서비스를 제공한다.이를 통해 HTML, CSS, JS, 이미지, 영상, 폰트 등을 제공할 수 있다.React로 만들어낸 CSR페이지와 같은 경우에도, npm run buil..
Spring, Spring Boot (2) ModelAndView, ModelMap, Model 3가지의 차이에 대해 설명하라.더보기WAS인 tomcat에서 동적 페이지를 반환하기 위해 사용하는 구현클래스들이다.세 개 모두  ModelAndView는 ModelAndView Bean을 사용하거나 새로 선언한 ModelAndView(개발자가 직접 생성)한 객체에model을 addObject로 집어넣고, view를 setViewName으로 집어넣어서 modelAndView라는 객체에 한 번에 반환 modelMap는 model이되, map 객체이다. 그래서 map의 기능을 사용해 유연하게 model을 담아두고,return을 String : viewname을 반환해서 사용 model은 간단한 데이터 전달에 사용함. 반환은 마찬가지로 String: view..
AWS EC2 Private Instance 구축 (2) VPC, 서브넷, IGW, 라우터 테이블 지난 번에 그려놨던 아키텍쳐를 토대로 VPC 및 서버(인스턴스) 설정의 절차를 소개하겠다. 1. Root 사용자 vs IAM 사용자일단 AWS "콘솔에 로그인" 을 누르면 IAM 사용자 로그인창이 먼저 뜨지만, 아래의 Sign in using root user email을 클릭하도록 하자.     그러면 오른쪽과 같이 나올 것이다.우리는 서버(인스턴스)를 생성하고,초기 설정을 해야하기 때문에 root 사용자를 선택해야 한다.         Root 사용자 : 모든 AWS의 권한을 갖고 있는 사용자인스턴스 및 서비스의 생성, 관리 및 삭제를 할 수 있다.서버를 관리할 관리자 개념인 IAM 계정을 등록할 수 있다.그 외의 루트 권한이 필요한 모든 작업을 수행 가능하다.IAM( Identity and Acce..
Producer - Consumer 패턴 프로그래밍을 공부하다 보면 Producer와 Consumer라는 단어가 참 많이 보인다.그렇다면 Producer와 Consumer가 무엇이길래 이렇게 많이 등장하는 것일까?Producer - Consumer 패턴에 대해 알아보자. 1. Producer and Consumer Problem"The producer and consumer problem is one of the small collection of standard, well-known problems in concurrent programming. A finite-size buffer and two classes of threads, producers and consumers, put items into the buffer (producers)..