반응형

Developer 6

[Linux] Nginx를 이용해 SpringBoot Application을 80 port로 프록시

SpringBoot Application을 80 port로 사용하고 싶은데, 리눅스 환경에서 80, 443과 같은 포트는 루트 권한으로 사용이 가능하다. SpringBoot application의 내장 톰켓이 해당 포트를 사용할 수 있도록 sudo 권한을 사용해 서비스를 올리는 것 보다 proxy 서버를 올리는게 더욱 용이하므로 Nginx를 사용한 내용을 정리한다. Nginx 란? Apache의 1만명 규모 클라이언트의 동시 접속을 다루는 기술적인 이슈를 해결하기 위해 만든 Event-driven 구조의 오픈소스 서버 프로그램이다. 일반적인 HTTP 웹서버의 역할 외에도 proxy, reverse proxy를 제공한다. 설치 및 설정 Centos6 설치 $ yum install nginx 라우팅 설정 y..

Dev/Linux 2020.06.06

[CleanCode] 9장. 단위 테스트

목차 TDD 법칙 세 가지 깨끗한 테스트 코드 유지하기 깨끗한 테스트 코드 테스트 당 assert 하나 F.I.R.S.T TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 깨끗하지 않은 테스트 코드는 유지 보수에 많은 비용이 필요하게 되고, 테스트 코드가 없으면 프로덕션 코드의 결함율이 높아지게 된다. 테스트 코드는 유연성, 유지보수성, 재사용성을 제공해야 한다. 깨끗한 테스트 코드 깨끗한 테스트 코드는 명료성, 단순성, 풍부한 표현을 바탕으로 한 가독성이 필수이다. 테스트 당 assert 하나 as..

Dev/Books 2020.05.18

[CleanCode] 7장. 예외 처리

목차 오류 코드보다 예외를 사용하라 Try-Catch-Finally 문부터 작성하라 미확인 예외를 사용하라 예외에 의미를 제공하라 호출자를 고려해 예외 클래스를 정의하라 정상 흐름을 정의하라 null을 반환하지 마라 null을 전달하지 마라 오류 코드보다 예외를 사용하라 오류 코드를 받아 처리 로직을 추가하는 것보다 오류가 발생하면 예외를 던지는게 좋음 Bad : 함수를 호출한 즉시 오류를 확인하지 않으면 문제가 발생할 확률이 높음 public class DeviceController { ... public void sendShutDown() { DeviceHandle handle = getHandle(DEV1); if (handle != DeviceHandle.INVALID) { retrieveDevi..

Dev/Books 2020.05.16

[CleanCode] 6장. 객체와 자료 구조

목차 자료 추상화 자료/객체 비대칭 디미터 법칙 자료 전달 객체 자료 추상화 변수를 함수를 통해 계층을 추가한다고 해서 구현이 저절로 감춰지지는 않는다. 추상 인터페이스를 제공해 사용자가 구현을 모르는 채 자료의 핵심을 조작할 수 있어야 클래스라고 할 수 있다. Bad : // 해당 클래스에 getX, getY 메서드를 추가한다 해도 사용자는 x, y를 반환할 뿐일 것이라고 추측이 가능하다 // 이것은 전혀 추상화되지 않은 상태이다 public class Point { public double x; public double y; } Good : // x, y가 실제 직교 좌표계인지, 극좌표계인지 알 수 없다 // 내부에서 변수가 바뀌던, 로직이 바뀌던 클라이언트는 상관이 없다 public interfac..

Dev/Books 2020.05.15

[CleanCode] 5장. 형식 맞추기

목차 형식을 맞추는 목적 적절한 행 길이를 유지하라 가로 형식 맞추기 팀 규칙 프로그래머는 규칙에 맞게 형식을 깔끔하게 맞춰 코드를 짜야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 형식을 맞추는 목적 맨 처음 잡아놓은 코드의 스타일과 가독성은 유지보수 용이성과 확정성에 계속 영향을 미친다. 적절한 행 길이를 유지하라 신문 기사처럼 작성하라 소스 파일은 고차원 개념/알고리즘 -> 저차원 함수와 세부 내역 순으로 아래로 내려갈수록 의도를 세세하게 표현 개념은 빈 행으로 분리하라 세로 밀집도 서로 밀접한 코드 행은 세로로 가까이 놓여야 함 수직 거리 변수 선언 - 사용하는 위치에 최대한 가까이 선언 인스턴스 변수 - 클래스의 맨 처음에 선언, 변수 간에 세로로 거리를 두..

Dev/Books 2020.05.12

[CleanCode] 3장. 함수

목차 작게 만들어라! 한 가지만 해라! 함수 당 추상화 수준은 하나로! Switch 문 서술적인 이름을 사용하라 함수 인수 부수 효과를 일으키지 마라! 명령과 조회를 분리하라! 오류 코드보다 예외를 사용하라! 반복하지 마라! 구조적 프로그래밍 함수를 어떻게 짜죠? 결론 작게 만들어라! 작게의 기준은 무엇일까? 블록과 들여쓰기 if/else/switch 문 등에 들어가는 블록은 한 줄이며 indent는 2단을 넘어서면 안된다. 적절한 메서드명을 가지는 메서드를 호출하는 방식을 통해 이를 충족시킨다. 한 가지만 해라! 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 함수는 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 한 함수에서 섹션을 나..

Dev/Books 2020.05.06
반응형