전체 글 (66) 썸네일형 리스트형 Spring AOP란? AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍을 뜻한다. 기존의 OOP에서 기능별로 클래스를 분리했음에도 불구하고, 공통적으로 반복되는 중복코드가 발생하는데 이를 해결할 수 있도록 실행시 비즈니스 로직의 앞과 뒤에서 원하는 지점에 해당 공통 관심사를 수행할 수 있게 한다. Spring DI/IoC IoC Inversion of Control의 약자로, 제어의 역전이라고 한다.spring에서는 빈의 생성, 의존관계 설정, 사용, 제거 등의 작업을 스프링 컨테이너에서 담당한다.이 때 스프링 컨테이너가 제어 역할을 하기 때문에 IoC라고 부르고, 스프링 컨테이너를 IoC 컨테이너라고 한다. IoC 컨테이너 스프링에서는 IoC를 담당하는 컨테이너를 빈 팩토리, DI 컨테이너, 애플리케이션 컨텍스트라고 부른다. 오브젝트의 생성과 오브젝트 사이의 런타임 관계를 설정하는 DI 관점으로 보면, 컨테이너를 빈 팩토리 또는 DI 컨테이너라고 부른다. 그러나 스프링 컨테이너는 단순한 DI 작업보다 더 많은 일을 하는데, DI를 위한 빈 팩토리에 여러 가지 기능을 추가한 것을 애플리케이션 컨텍스트라고 한다. 빈 팩토리.. Spring MVC 정의 Spring MVC Spring MVC는 Spring에서 제공하는 웹 모듈로, Model, View, Controller 세가지 구성요소를 사용해 사용자의 다양한 HTTP Request을 처리하고 단순한 텍스트 형식의 응답부터 REST 형식의 응답은 물론 View를 표시하는 html을 return하는 응답까지 다양한 응답을 할 수 있도록 프레임워크 HTTP Request를 처리하는 부분인 Controller, 데이터를 처리해 정제된 데이터를 넣는 Model, 정제된 데이터를 활용해 사용자에게 보여지는 View에 대한 역할 분리를 잘 해놓았다. Spring MVC를 사용하면 Model, View, Controller 모두를 인터페이스를 사용해 규격화해놓아 유연하고 확장성 있게 웹 어플리케이션을 설계할.. 기술 질문 목차 기술질문 JAVA 자바의 장점과 단점을 설명해주세요 자바 데이터 타입 중 기본형과 참조형의 차이에 대해 설명해주세요. JVM이란 무엇인가? JVM의 구조와 Java의 실행방식을 설명해주세요. GC가 무엇인지, 필요한 이유는 무엇인지, 동작방식에 대해 설명해주세요. 컬렉션 프레임워크에 대해서 설명해주세요. 자바의 컬렉션에 대해 설명해주세요 제네릭에 대해서 설명해주세요. Java 8에서 Stream을 사용해보셨나요? Java의 접근 제어자의 종류와 이에 대해 설명하세요. Enum 사용해보셨나요? Enum이란 무엇인가요? equals를 오버로딩하여 사용해봤나요? hashCode란 무엇인가요? Call by Value와 Call by Reference에 대해 설명해달라 가비지 컬렉션 알고리즘에 대해 설명해.. application.yml 환경변수 분리 1. 실행 환경에 따른 yml 파일 분리 api 구현에만 집중한 채 진행했기 때문에 application.yml의 요소들이 외부에 노출되어있는 문제점이 있었다. 이 항목들을 local, prod로 분리해서 사용할 것이다. 이렇게 3가지 파일로 분리하고, 테스트를 위해서 local은 포트번호 8081, prod는 포트번호 8082로 둔 후 application.yml에서 프로퍼티를 지정해주었다. #application.yml server: port: 8080 spring: profiles: active: local #application-test.yml spring: config: activate: on-profile: test server: port: 8081 #application-prod.yml sp.. 백엔드 cicd 구축하기3 jenkins를 이용해서 cicd를 모두 구현했다. 처음 계획과 달라진 점이 있다면 처음에는 한 서버에서 jenkins를 통해 ci를 진행하고, 동시에 실행까지 하는게 목표였는데, 진행하다보니 몇가지 문제점이 있어서 jenkins 서버와 spring boot 서버를 나누기로 한 점이다. 일단 첫번째 이유로, 프리티어로 진행하다보니 jenkins와 spring boot를 동시에 실행하는게 불가능했다. 간단한 build에만 5분 넘는 시간이 소모되었고, 만약에 cicd가 진행되는 동안 api 요청까지 실행한다면 상당한 딜레이가 발생할 것이라 판단했다. 두번째 이유는 크롤링이다. 아직 서버에 올리는 단계는 아니지만, 나중에 스케줄링을 통해 실행할 계획을 가지고있기 때문에 한 서버에서 jenkins, sprin.. 백엔드 cicd 구축하기2 이전에 문제가 됐던 부분은 로컬 환경에서는 jar 파일이 정상적으로 실행되지만 원격 환경에서는 실행되지 않는 문제였다. 검색을 해봐도 같은 문제를 겪었던 사람이 없었기 때문에 한참을 헤맸는데 걸린 시간에 비해 해결은 굉장히 간단했다.... 지금 구축중인 cicd 구조를 간단하게 설명해보면 aws 원격 서버를 띄우고, 해당 서버에서 docker를 연결한 후, jenkins 이미지를 받아서 실행한다. 이렇게 띄운 jenkins 서버에서 cicd를 구축하기 위해서 일단 ci부분을 구현중이었고, github에서 커밋이 될 경우 jenkins에서 이를 인식해 spring boot 프로젝트를 build 후 실행 하는 부분까지 진행중이었다. 문제점은... jenkins가 어떻게 동작중인지 정확하게 인지하지 못한 채로.. 백엔드 cicd 구축하기 프론트엔드에서 api를 호출하는 부분을 구현하기 전에 백엔드 api를 실행시켜서 그 상태로 프론트엔드에서 활용하고 싶어 백엔드를 서버에 올리는 작업을 먼저 했다. 서버 aws에서 제공하는 프리티어 서버를 사용했다. 프로그램 설치 docker를 이용해서 젠킨스를 설치했다. 우선 자바와 docker, docker-compose를 설치한다. 그 후, 실행하는 위치에 docker 실행을 위한 yml파일을 만들었다. version: "3" services: jenkins: image: jenkins/jenkins:lts user: root volumes: - ./jenkins:/var/jenkins_home ports: - 8080:8080 파일을 만든 위치에서 `sudo docker-compose up -d' .. 이전 1 2 3 4 ··· 9 다음