Back-end
-
java bean mapper와 DTO 소개Back-end 2018. 3. 19. 20:22
Overviewspring, jpa 기반으로 개발할때 도움이 될 수 있는 java bean mapper 라이브러리를 소개합니다. 아래와 같은 간단한 JPA Entity 객체를 가지고 설명합니다. Http 기반의 api 를 개발할때 필요에 따라 JPA Entity 를 바로 api 의 응답으로 내보내는 경우가 있습니다. 아래는 샘플 코드입니다. 그러면 다음 그림과 비슷한 결과를 응답하게 됩니다. 이럴 경우에 발생하는 순환 참조 문제같은 몇가지는 jackson json 라이브러리가 해결해주기도하지만 일반적으로 아주 작은 프로젝트가 아니라면 추천할만한 방식이 아닙니다. JPA Entity 도메인 데이터와 api 응답 데이터간에 생명주기가 틀리기 때문입니다. 데이터 생명주기프로젝트의 초기에는 요구사항에 잘 맞춰서..
-
spring-data-jpa + querydsl 로 개발하기 - 2Back-end 2016. 7. 28. 20:00
spring-data-jpa + querydsl 로 개발하기 - 1 에서 이어지는 글입니다. 3단계 - 네임드 쿼리@Query, @NamedQuery 어노테이션 다른 테이블과의 조인이 필요하거나 where 절이 꽤 복잡한 쿼리라면 method 이름만 가지고 모두 표현하기에는 무리가 있다.3단계는 복잡한 쿼리를 만드는 가장 쉬운 방법으로 저장소 인터페이스에 method를 생성하고 선언부에 @Query 어노테이션을 사용하는 방법이다. @Query 어노테이션을 사용하는 method의 이름은 2단계 쿼리 메서드규칙의 영향을 받지 않으므로 원하는데로 지으면 된다. 여기서 작성되는 쿼리는 JPQL 로 JPA의 쿼리 문법이다. 옵션을 통해 native SQL로 작성도 가능하다. 이 단계도 쿼리가 잘못 작성되었을 경우..
-
spring-data-jpa + querydsl 로 개발하기 - 1Back-end 2016. 6. 8. 00:31
소프트웨어 개발이라는것은 퍼즐 맞추기나 블럭쌓기 보다는 회화 그리기나 조각하기에 더 가깝다고 할 수 있다. 안개가 겉히듯 서서히 선명해지는 것이 소프트웨어 개발의 특성이라고 본다. spring에서 개발되는 제품들은 소프트웨어 개발의 이런 특성을 잘 고려하여 설계가 되어 있다. spring을 이용하여 프로그램을 개발할때 이런 점진적, 반복적 개발이 가능하도록 지원하고 있다. 제로 컨피규레이션이라고 하여 모든 상황에 대해서 미리 지정된 기본동작으로 작동하며, 개발자자 추가설정을 해나가면서 개별 프로젝트가 원하는 요구사항에 맞춰가게 되는 방식이다. 비교적 최근에 추가된 spring-boot를 통해 빠른 개발이 완성되어가는 모습이다. 사용하는 기술 간단 소개 JPA (java persistence api)per..
-
webSocket 으로 개발하기 전에 알고 있어야 할 것들Back-end 2015. 10. 22. 00:47
이번 프로젝트에 webSocket으로 통신하는 기능을 넣기 위해 검색을 해봤는데 많은 글들이 이런 저런 용어들에 대해서 두서없이 사용하고 있어서, 관련 내용을 이해하는데 어려움이 있었다. 우여곡절 끝에 전체적인 흐름을 이해하게 되어 다른 개발자들은 고생을 덜 하기를 바라는 마음으로 정리를 해본다. 관련 기술에 대해서 어떻게 발전해왔는지 흐름을 이해하면 프로젝트 진행시 사용할 기술들을 선택하는데 큰 도움이 될 수 있다. 기존의 양방향 통신 방법webSocket은 웹페이지와 서버간에 실시간 상호작용을 위해 만들어진 스팩이다. http 규격 자체가 클라이언트에서 서버로의 단방향 통신을 위해 만들어진 방법으로, webSocket 이전에는 실시간 통신을 위해서 일반 http request에 약간의 트릭을 사용해서..
-
thymeleaf inline javascript 사용하기 & jackson json 으로 변환하기Back-end 2015. 4. 25. 19:46
웹 개발시 html 템플릿 엔진으로 thymeleaf 를 사용할때 인라인 자바 스크립트라는 기능에 대해서 소개하고 현재 버전이 가지고 있는 문제점을 해결할 수 있는 방법을 전달한다. 인라인 자바스크립트(inline javascript) 사용 위와 같은 형태로 사용한다. 여기서 인라인이라는 의미는 서버에서 뷰생성을 위한 데이터를 웹브라우저로 그대로 넘긴다는 의미로 볼 수 있다. 이렇게 넘기는 객체를 json으로 변환해서 변수에 할당하면 javascript 라이브러리에서 바로 사용할 수 있다.이런 기능이 없다면 최초의 데이터는 서버스크립트로 처리하고 자바스크립트에서 데이터를 읽어오기 위해서는 ajax로 별도의 서버요청을 통해서 데이터를 읽어와야 한다. json 포맷 이슈인라인 자바스크립트를 사용하다 발견한 ..
-
[AWS]EC2 톰켓(tomcat) https (SSL) 보안 연동Back-end 2014. 9. 5. 22:31
overview 아마존 AWS를 이용해서 서버를 구축할때 HTTPS로 보안적용을 해보자. 기본 서버 구축환경은 아래와 같이 되어 있다고 가정한다. 간단히 설명하자면 최초 요청을 받는 곳은 로드벨런서(ELB (elastic load balancer))이고, ELB가 자기와 연결된 EC2 인스턴스에 설치되어 있는 웹 서버(nginx)로 요청을 넘긴다. 웹서버는 다시 웹 어플리케이션 서버(tomcat)로 요청을 넘겨 최종적으로 요청을 처리하게 된다.이미지등 단순 리소스는 웹서버(nginx)가 처리하고 그외 어플리케이션 로직 처리는 웹 어플리케이션 서버(tomcat)에서 할 수있도록 하는 구조이다. 이과정에서 HTTPS 설정은 로드벨런서에서도 할 수 있고 웹서버에서도 할 수 있고 웹 어플리케이션 서버에서도 할 ..
-
nginx에서 http 요청을 https (SSL) 요청으로 변환하기Back-end 2014. 8. 4. 12:04
Nginx에서 http로 들어오는 모든 요청을 https로 바꾸는 방법이다. rewrite 라는 명령어를 사용한다.참고로 rewrite는 리다이렉트와 같은 의미이고 proxy_pass 는 포워드의 개념이다. 서버로 들어오는 모든 요청을 https로 변환server { listen 80; server_name example.com www.example.com; ## redirect http to https ## rewrite ^ https://$server_name$request_uri? permanent;} rewrite를 적용할 요청 path를 정규식 표현으로 지정후 바뀔경로 패턴을 정의 해준다. 정규식에서 ^는 문자열의 시작을 의미한다. 정규식 간단한 규칙 보기 --> https://developer..
-
[AWS]EC2 centOS 인스턴스 스토리지 확장하기Back-end 2014. 8. 1. 21:12
아마존에서 특별한 설정변경없이 EC2 인스턴스를 생성하면 기본적으로 8G의 디스크용량을 가지게 된다. 이렇게 사용하다가 용량이 부족하다 싶으면 사용하던 데이터를 손대지 않고 스토리지의 공간을 확장할 수 있다.기본적인 개념은 아래와 같다. EC2를 정지시킨다.연결되어 있는 EBS를 detach 시킨다.detach 된 EBS volume의 snapshot을 생성한다.생성된 snapshot으로 새로운 EBS volume을 생성한다. 이때 생성되는 EBS volume의 크기를 원하는 사이즈로 지정한다.EC2에 새로 생성된 EBS volume을 attach 한다.EC2 인스턴스에 접속해서 디스크크기를 재설정한다. 대략 위와 같은 과정이라고 보면 된다.쉽게 설명하면 서버에서 기존의 저장장치를 때어내고 새로만든 큰 ..