개발 공부 기록 49

SpringBoot 환경에서 API 만들어보기 - GET, POST

스프링 부트에서 API를 개발하려고 하는 클래스에는 가장 위에 @RestController를 적어줘야 한다. @RestController에서 getter가 있는 객체를 반환하면 JSON으로 반환해준다. 이는 클래스를 api의 진입 지점으로 만드는 것이고, 이 클래스 안에 메소드에 접근할 수 있다. 1. GET API 만들기 아래는 간단한 덧셈을 하는 코드이다. @RestController public class CalculatorController { @GetMapping("/add") // GET /add public int addTwoNumbers(@RequestParam int number1, @RequestParam int number2){ return number1 + number2; } } @..

@SpringBootApplication과 서버

1. 어노테이션(Annotation)? Java에서 annotation은 메타데이터이며, 여러 일을 자동으로 해주는 것이다. 2. @SpringBootApplication? 스프링을 실행시키기 위해 필요한 다양한 설정들을 모두 자동으로 해주는 어노테이션인 것이다. 3. 서버란? 어떠한 기능을 제공하는 프로그램이자 실행하는 컴퓨터 자체 회원가입 기능 / 정보 불러오기 기능 / 좋아요 기능 등등.. 4. 네트워크란? 서버에 요청을 하기 위해선 인터넷으로 요청을 해야한다. 그러므로 데이터를 주고 받을 수 있는 네트워크 (IP주소, DNS, port) 개념이 생겨났다. 5. HTTP와 API란? 네트워크를 통한 컴퓨터 간의 통신은 HTTP라는 표준화된 방식이 있다. HTTP는 HyperText Transfer ..

IntelliJ 키워드 - 꿀팁 및 단축키 정리

GroupId : 스프링, 스프링부트등 그룹 ArtifactId : 그룹의 하위 모듈(스프링 시큐리티, 스프링 MVC) Ctrl + Shift + F10: 이 단축키는 현재 포커스가 위치한 클래스나 메소드를 실행합니다. Shift + F10: 이 단축키는 가장 최근에 실행했던 실행 구성(Run Configuration)을 다시 실행합니다. 따라서, 첫번째는 현재 포커스가 있는 위치의 실행 가능한 코드를 실행하는 것이며, 두번째는 가장 최근에 실행했던 코드를 다시 실행하는 것입니다. 이런 차이가 있다. 추가 단축키 생성 단축키 ⇒ Alt + Ins 라인 복제 ⇒ Ctrl + D Redo or DeleteLine ⇒ Ctrl + Y 라인 단위 문자열 합치기 ⇒ Ctrl + Shift + J (쿼리짤때 주로 ..

[Java] - Build, Gradle, Maven이란?

1. 빌드 빌드? 소스 코드 파일을 여러 과정을 거쳐 컴퓨터에서 실행할 수 있는 Artifact 변환시키는 과정 빌드를 세분화 하면? 소스 코드를 컴파일 한다. ( Hello World를 0과 1로 변환한다. ) 테스트 코드를 컴파일 한다. ( 로직별 테스트코드 ) 테스트 코드를 실행한다. 테스트 코드 리포트를 작성한다. 기타 추가 설정을 진행한다. 패키징을 수행한다. ( JRE에 포함되어 있다. ) 최종 SW 결과물(Artifact)를 만들어 낸다. 2. 실행 (run) 내가 작성한 코드를 컴파일을 거쳐, 작동시켜 보는것 즉, Artifact가 나올 수도있고, 나오지 않을 수도 있다. 빌드(build)와 실행(run)은 다르다 빌드 툴(Build tool) 소스코드의 빌드 과정을 자동으로 처리 해주는 ..

[Java] - JDK, JRE, JVM 이란?

1. 컴파일, 컴파일러, 바이트코드란? 컴파일: 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정 컴파일러: 컴파일을 하는 프로그램 바이트 코드 : 0과 1로 이루어진 코드, 컴퓨터가 이해할 수 있다. 2. JVM (Java Virtual Machine) JVM은 바이트코드와 운영체제 사이에서 둘을 호완시켜 주는 역할을 한다. 즉, 운영체제 마다 컴파일러가 다른 다른 언어들과는 다르게, JVM은 바이트코드를 각각의 운영체제에 맞게 번역해준다. 따라서 인기가 많은 JVM은 JAVA 외에 다른 언어에서도 사용한다. 3. JDK > JRE > JVM JRE = JVM + 자바 프로그램 (실행에 필요한 라이브러리 파일 스캐너 아웃풋 파일처리 등등등) JDK = JRE + 개발을 위한 도구 ( javac (컴파..

AWS에서 무중단 서비스를 구축해 보자.

새로운 Jar가 실행되기 전까지 (배포하는 동안) 기존 jar를 종료시키기 때문에 서비스가 중단된다. Nginx를 이용한 무중단 배포를 해보자. 리버스 프록시? 엔진엑스가 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 것. 리버스 프록시 서버(엔진엑스)는 요청을 전달한다. 실체 요청에 대한 처리는 뒷단의 웹 애플리케이션 서버들이 처리한다. 리버스 프록시를 통해 무중단 배포 환경을 구축해보자! 1. 기존에 사용하던 EC2 인스턴스를 활용한다. 엔진엑스는 80(http), 443(https) 포트를 할당한다. 스프링부트 1 Jar는 8081 포트로 실행한다. 스프링부트 2 Jar는 8082 포트로 실행한다. 엔진엑스와 하나의 스프링부트만 연결하고, 신규 버전으로 배포가 끝나면 reload를 통해 다른 스..

AWS에서 Travis를 이용해 CI/CD를 해보자

1. CI / CD 란? 코드가 git에 push 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정을 CI (Continuous Integration - 지속적 통합) 이라고 한다. 이 빌드 결과가 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD (Continuous Deployment - 지속적인 배포) 라고 한다. 2. CI의 장점 현대 개발에서는 여러 프로그래머가 하나의 프로젝트를 같이 개발하므로 지속적인 코드가 통합되는 환경(CI)를 구축하고, 테스트코드와 빌드를 수행하면서 자동으로 코드가 통합되어 개발에 집중할 수 있게 한다. 3. CD의 장점 한 두대의 서버에 개발자가 수동으로 배포를 하지않고, 수백대나 긴박하게 배포할 경우 수동으로 하면 오래걸리기 때문에 자..

AWS EC2 서버에 프로젝트를 배포해보자.

EC2서버에 git에서 clone해온 프로젝트 파일이 잘 되어있음을 확인한 후 시작한다. gradlew 파일은 그레이들이 설치되지 않는 환경이라도 그레이들을 쓸 수 있도록 지원해 주는 Wrapper 파일이다. 1. 배포 스크립트 만들기 작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다. 배포과정을 하나하나 하는건 불편하다. 그러므로 쉘 스크립트로 작성해 실행하면 자동으로 진행되게끔 구성해 보겠다. vim ~/deploy.sh #! /bin/bash REPOSITORY=/home/ec2-user/app/step1 // 쉘에서는 $ 변수명으로 변수를 사용할 수 있다. 변수로 지정한것임. PROJECT_NAME= fr-springboot cd $REPOSITORY/$PROJECT_NAME/ // 프로젝트..

Windows에서 putty를 이용하여 aws ec2와 rds 서버에 접속해보자.

1. putty 설치 -> 말안해도 알테니 다들 설치했음을 믿는다. 2. .pem key -> .ppk로 변경 AWS에는 putty로 열시 ppk 파일이 필요하다. putty를 깔면 putty gen이 자동으로 깔리는데, 이 프로그램을 이용해서 pem 파일을 ppk 파일로 변환해주면 된다!. 저 빨간 Save private key를 눌러서 ppk로 바꿔준다. putty 설정 -> SSH -> Auth -> Private key file for authentication에 ppk 파일을 넣어주면 된다. 3. putty로 접속 Host Name에 ec2-user@탄력적 IP 주소 하고 접속한다면 접속이 될 것이다! 4. rds 접속 되는지 확인해보기 인텔리제이에서 Database -> MariaDB HOST..

AWS RDS 데이터베이스 환경을 만들어보자.

데이터베이스 구축 및 쿼리 튜닝에 대해서 잘 알아야 한다. 서버 코드를 작성하는 것만큼 데이터베이스를 잘 다룰 줄 아는 것도 중요하다. AWS에서 지원하는 RDS(Relational Database Service) 를 통해 DB를 구축하고 EC2 서버와 연동해보자. 1. RDS 인스턴스 생성하기 이와 같이 rds 선택하고, 데이터베이스 생성 눌러준다. 상세설정에선 위와 같이 설정해준다. 네트워크 및 보안 설정을 해준다. 데이터베이스 옵션에서 이름 및 그룹을 설정해준 이후, 데이터베이스를 생성해주자! 2. RDS 설정하기 타임존 Character Set Max Connection 을 설정해주자. 1. time_zone 설정 2. character_set 설정 3. max_connections 수정 프리티어..