리스트 예시: 게시물이 존재할 경우 3건을 노출합니다.
-
카테고리 없음
[IntelliJ] HTTP Client 활용하기
안녕하세요. 유저인사이트 박태양입니다. 저희는 작성한 API를 테스트 하기위해 포스트맨이나 스웨거를 주로 사용했습니다. 포스트맨은 작성한 Request를 팀원과 공유하기 위해서 멤버십 업그레이드가 필요했고, 스웨거는 우선 프로젝트에 적용해야하고, 재시작시마다 매번 Reqeust 값을 입력해줘야하는 불편함이 있었습니다. 위 문제들을 해결하기 위해 인텔리제이에서 제공하는 HTTP Client를 활용하게 되었습니다. HTTP Client 사용방법은 아래와 같습니다. 1. 원하는 경로에 http 파일을 생성합니다. (저희는 /src/test/http로 통일하였습니다.) 2. + 버튼을 클릭하여 리퀘스트를 추가합니다. 3. 실행 버튼을 클릭하여 리퀘스트를 수행하고 결과를 확인합니다. 4. 반복되는 값은 환경변수..
-
Docker
컨테이너 용량이 계속해서 증가하는 문제에 대한 해결책
안녕하세요.일평균 접속이 100,000건 이상, 동시접속이 1,000건 이상인 어린이집 출결관리 시스템을 운영 중에 알 수 없는 문제가 발생하였습니다. 문제문제는 컨테이너 용량이 계속해서 증가한다는 것이었는데요. 초기에는 원인 파악이 어려워 일단 호스트 파티션 용량을 늘려 조치를 하고 원인을 분석한 결과 문제는 Docker 이미지의 /tmp 디렉토리였습니다. 저희는 AWS S3를 사용하고 있으니 용량 문제는 발생하지 않을 거라고 생각했지만, 사실 어린이집에서 업로드하는 영상이나 사진들이 모두 호스트를 거쳐 S3에 업로드되는 구조다 보니 임시 파일(/tmp)이 계속해서 쌓이더군요. 더군다나 리눅스에서 /tmp 경로는 시스템이 재부팅될 때 청소가 된다고 하니 무중단 시스템에서는 정기적으로..
-
Docker
호스트 디스크 용량이 갑자기 부족한 경우
서론 저희가 유지보수를 하는 고객사 시스템은 대부분 AWS EC2 인스턴스에서 Docker를 기반으로 구축되어 구동되고 있습니다. 간혹 디스크 용량이 100%에 임박하는 경우가 발생하는데 저희 서비스는 파일을 S3에서 관리하도록 개발되기 때문에 디스크 용량이 부족할 수가 없는 경우라 난감한 경우가 있었습니다. 원인 원인 분석 결과 Docker에서 구동중인 컨테이너에서 발생한 로그가 제한(max-size) 없이 계속 쌓이다 보니 디스크 용량을 지속적으로 갉아먹고 있던 문제였고, 다른 서비스 또한 시간이 지나면 같은 문제를 만날 수 밖에 없는 상황이었습니다. 결론 결론적으로 개별 컨테이너에 로그 용량 제한을 걸면 되는데요. 해결방법은 아주 단순합니다. 적용 즉시 max-size를 초과하는 모든 로그가 삭제되..
-
카테고리 없음
[GitLab] 이슈 또는 MR(Merge Request)에 템플릿 적용하기
안녕하세요. 유저인사이트 박태양입니다. GitLab을 사용하면서 이슈/MR을 작성할때, 특별한 양식을 정하지 않고 사용하고 있었습니다. 자유롭게 작성할 수 있다는 장점이 있지만, 때로는 다른 개발자가 이해하기 위한 정보가 부족하게 작성될 때가 있습니다. 최소한의 통일성을 갖기 위해 GitLab에서 제공하는 템플릿 기능을 사용하게 되었습니다. 1. 프로젝트 Code > Repository 메뉴에 진입합니다. 2. 플러스 버튼을 눌러 New File을 클릭합니다. 3. 에디터 상단 Filename을 다음과 같이 입력합니다. (맨 앞에 . 점이 있으니 유의하세요) 이슈 : .gitlab/issue_templates/default.md MR : .gitlab/merge_request_templates/defau..
-
Spring Boot
Querydsl 에서 Order By 구문에 조건문이 있을 시 생기는 오류 처리 (unexpected AST node)
안녕하세요 유저인사이트 박준호 선임입니다. 상품들의 별도의 정렬 기준이 있는 상태에서, 재고가 0 인 상품은 하단에 몰리도록 처리하는 부분에 문제가 생겼습니다. final JPQLQuery query = from(product).where(builder).orderBy(product.stock.eq(0).asc()) .leftJoin(plant).on(product.plant.eq(plant)) .leftJoin(pot).on(product.pot.eq(pot)) .groupBy(product.pot.potGroup, product.plant.plantGroup); :7:24: unexpected AST node: = 혹시나 문법 오류가 있는지 확인하기 위해 Sql로 테스트 해봤는데, 문제가 없었습니다...
-
Spring Boot
IntelliJ에 SonarQube 연동하기 (SonarLint)
안녕하세요. 유저인사이트 박태양입니다. 이번 시간에는 IntelliJ에 정적 분석 도구인 SonarQube를 연동하는 방법을 알아보도록 하겠습니다. 순서는 아래와 같이 진행됩니다. 1. 소나큐브 설치 및 키 발급 2. IntelliJ에 SonarLint 플러그인 설치 후 연동 우선 아래 링크를 통해 소나큐브를 다운로드 합니다. https://www.sonarsource.com/products/sonarqube/downloads/ Download | SonarQube Get the latest LTS and version of SonarQube the leading product for Code Quality and Security from the official download page. www.sona..
-
Spring Boot
랜덤한 IV(Initial Vector)를 사용하여 AES256 암호화, 복호화 하기
안녕하세요 유저인사이트 박태양입니다. 프로젝트를 진행하다 보면, 개인정보와 같은 암호화가 필요한 필드들이 있습니다. AES256 관련된 코드를 구글링 해보면 대부분의 블로그에서 IV값을 고정값으로 사용하고 있습니다. 이는 권장되지 않는 방식입니다. 저희는 소나큐브를 통해 아래와 같은 메시지를 확인할 수 있었습니다. Use a dynamically-generated, random IV 왜 문제가 되는것일까요? IV를 고정된 값으로 처리하면, 입력한 값이 동일한 경우 동일한 암호화 결과를 제공합니다. 예를들면 "박태양"이라는 문자열을 암호화할때 1회차 : $2a$12$lYImjNoPVvNn30O 2회차 : $2a$12$lYImjNoPVvNn30O IV를 랜덤한 값으로 처리하면 아래와 같이 결과가 미세하게 달..
-
세미나
OWASP Top 10 보안 취약점과 대응 방안
안녕하세요 유저인사이트 박준호입니다. 저는 이번에 웹 개발자라면 알아야 할 OWASP Top 10 보안 취약점과 대응 방안에 대해 정리 해봤습니다. 이 취약점이 가리키는 내용들과 해당 취약점의 대처 방안을 Spring Security 기준에서 알아보도록 하겠습니다. OWASP OWASP (Open Web Application Security Project)는 웹 애플리케이션 보안을 위한 오픈 소스 프로젝트로, 매년 많은 전문가들이 참여해 웹 애플리케이션 보안 취약점을 조사하고, OWASP Top 10이라는 보안 취약점 목록을 발표합니다. OWASP Top 10은 현재 가장 흔한 웹 애플리케이션 보안 취약점들을 정리한 목록입니다. 매년 목록들이 갱신되는데, 해가 넘어가면서 사라지거나 취합되기도 합니다. O..