Programming
-
[JAVA] 코드를 올바르게 드러내는 방법Programming/Java 2021. 7. 16. 18:03
자바 코딩의 기술 6. 올바르게 드러내기 코드는 꼭 테스트하라. 아니면 사용자가 하게 된다. — 데이브 토마스, 앤드류 헌트 인간은 모두 실수를 한다. 얼마나 뛰어나든, 교육을 얼마나 잘 받았든, 경험이 얼마나 풍부 하든 가끔 버그가 있는 코드를 작성한다. Java에는 내장된 테스트 지원이 없지만 그 역할은 JUnit 프레임워크가 대신한다. JUnit 프레임워크는 테스트를 자동으로 실행하기 위한 사실상의 Java 표준이다. Java에서 단위 테스트 작성의 사실상 표준인 JUnit의 가장 최신 버전은 JUnit5이다. 테스트 정의를 위해서는 메소드위에 @Test 애노테이션을 추가하면 실행이 가능하다. 6.1 Given-When-Then으로 테스트 구조화 Person.java public class Pers..
-
[CI/CD] Travis CI를 활용한 배포 자동화 (2)Programming/infra 2021. 6. 27. 19:23
이전 글 [CI/CD] Travis CI를 활용한 배포 자동화 (1) 이전 글에서는 단순히 프로젝트를 빌드하는 과정까지만 진행하였다. spring boot 프로젝트의 경우 보통 빌드가 완료되면 내장 톰캣이 들어있는 jar 파일이 생성된다. 배포가 의미하는 것은 해당 jar 파일이 특정한 서버에서 운영되어야 한다. 이번에는 빌드가 완료된 jar 파일을 AWS에서 제공하는 파일 서버에 연동해보려 한다. Amazon S3 아마존 웹 서비스에서 제공하는 온라인 스토리지 웹 서비스이다. s3가 의미하는 것은 Simple Strorage Service의 각 단어의 맨 앞 글자 s 3개를 의미한다. Travis 서버에서 생성된 jar 파일을 S3에 전달해야 한다. 이유는 실제 배포는 AWS의 CodeDeploy를 통..
-
[CI/CD] Travis CI를 활용한 배포 자동화 (1)Programming/infra 2021. 6. 22. 16:24
CI CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 레포지토리에 통합되기 때문에 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다. 이러한 CI를 위한 서비스에는 대표적으로 Travis CI와 Jenkins 등 이 있다. Travis CI Travis CI는 github에서 제공하는 무료 CI 서비스이다. Jenkins의 경우 설치하여 사용해야 하지만 Travis CI는 오픈소스 웹 서비스이기 때문에 오픈 소스인 경우 무료로 사용이 가능하다. 간단한 사용법을 알아보기 ..
-
[INFRA] EC2 서버 접속하기 (Mac & Linux)Programming/infra 2021. 6. 21. 23:51
Mac Mac 구매를 기념하여 Mac에서 EC2 서버에 빠르게 접근할 수 있는 방법에 대해 정리하려 한다. Mac에서 AWS와 같이 외부 서버로 SSH 접속을 위해서는 ssh 명령어를 사용해야 한다. ssh? 보안적으로 취약했던 기존의 telnet등을 대체하기 위해 설계된 Secure shell의 약자이다. 기본적으로 22번 포트를 사용하여 다른 리눅스 서버로 접근이 가능한 프로토콜이다. 기본 암호화 방식을 지원하고 중간에 암호가 해킹을 당해도 원본을 알 수 없고 강력한 인증 방식을 지원하는 프로토콜이다. ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-public-dns-name 하지만 매번 이렇게 명령어를 입력하여 접속하는 것은 매우 불..
-
[JPA] 긴 길이의 문자열 저장하기Programming/JPA 2021. 6. 20. 22:59
개요 프로젝트를 진행하던 중 프론트에서 특정한 블로그의 게시글 내용을 markdown 문법을 기반으로 긴 길이의 문자열을 전송하여 백엔드와 연동된 DB인 MySQL에 저장하도록 정하게 되었다. JPA에서 긴 길이의 가변 문자열을 처리하는 방법에 대해 알아 보았고 다양한 테스트를 거쳐 각각의 차이를 확인해보았다. SQL 데이터형 CHAR 고정 사이즈이고 남은 공간은 공백으로 채운다. 삽입되는 데이터가 선언된 길이보다 작다면 공간의 낭비가 우려된다. 주민등록번호와 같이 고정된 길이의 데이터는 CHAR를 사용하는 것이 더욱 좋을 것이라고 생각된다. VARCHAR 가변 길이이다. 데이터를 삽입하면 데이터 값 외에 삽입된 문자열의 길이를 저장한다. 255글자 이하에는 1바이트를 필요로 하고, 그 이상은 2바이트의..
-
[Spring boot] 리눅스 환경에서 마주한 TemplateInputException: Error resolving templateProgramming/Spring boot 2021. 6. 7. 19:37
프로젝트를 진행 하던 중 프론트의 원할한 작업과 실제 배포 환경을 연습하기 위한 개발 서버를 구성하였다. window 기반 local 환경에서 프로젝트를 진행했을 때 큰 문제 없이 thymeleaf의 화면이 적절히 랜더링 되는 것을 확인하였다. 하지만 ec2를 활용한 amazon linux 2 기반의 개발 서버에서는 아래와 같은 에러를 맞닥뜨리게 되었다. Error resolving template [/fragments/admin-header.html] 현재 프로젝트 구조를 보면 html의 head 부분과 body의 header, footer 부분을 fragments로 나누어 사용하고 있다. 새롭게 페이지를 구성할 때 위와 같은 fragments들을 적절히 배치하여 작성하고 있었다. example.htm..
-
[INFRA] EC2에서 nginx 설치Programming/infra 2021. 5. 26. 02:22
개요 프로젝트를 진행하던 중 배포가 중단되지 않는 무중단 배포를 구현하기 위해 nginx 설치 방법을 정리한다. nginx의 경우 가장 저렵하고 쉽게 적용가능하기 때문에 큰 이점을 가지고 있다. 이글은 아마존 리눅스 2를 기반으로 작성되었다. 1. nginx 설치 아마존 리눅스 2의 경우 yum을 활용하여 nginx의 설치가 지원되지 않는다. 그렇기 때문에 amazon-linux-extras를 활용하여 nginx를 설치해야 한다. $ sudo amazon-linux-extras install nginx1 설치가 완료되면 -v 옵션을 활용하여 확인 과정을 거친다. $ nginx -v nginx version: nginx/1.18.0 2. nginx 서비스 시작하기 $ sudo service nginx st..
-
[INFRA] amazon EC2 초기 설정Programming/infra 2021. 5. 24. 22:39
개요 Java 기반의 웹 애플리케이션을 작동시키기 위한 서버설정을 정리한다. 이글은 아마존 리눅스 2를 기반으로 작성되었다. 1. Java 설치하기 아마존 리눅스 2는 기본적으로 jdk가 설치되어 있지 않다. java 8 설치 $ sudo yum install -y java-1.8.0-openjdk-devel.x86_64 java 11 설치 $ sudo amazon-linux-extras install java-openjdk11 java version 변경 $ sudo /usr/sbin/alternatives --config java java version 확인 $ java -version openjdk version "11.0.11" 2021-04-20 LTS OpenJDK Runtime Environ..