본문 바로가기
반응형

개발51

[Docker] 도커 이미지 크기 줄이기 도커 이미지를 통해 배포를 진행하다 보면 도커 용량이 생각보다 매우 커서 서버의 용량을 자주 잡아먹는 일이 많았다.그러던 중 다른 동료분의 발표에서 도커 이미지 크기를 2GB에서 200MB로 90%나 줄였다는 이야기를 듣고, 도커 파일 이미지 크기를 개선해 보는 것을 목표로 도커 파일을 수정해 보았다. 📍 도커 이미지 크기를 줄이면 뭐가 좋은데?도커 이미지 크기를 줄이면 빠르게 빌드를 할 수 있음특히, 이미지 크기가 클수록 네트워크 대역폭을 더 많이 사용하여 빌드와 배포에 시간이 더욱 많이 소비가 되고, 이는 리소스 낭비에 이어질 수 있기 때문에 이미지 크기를 줄이면 굉장히 많은 도움이 될 수 있음. 🔗 개선 전 도커 파일 코드# Node.js 20 이미지 설정FROM node:20# pnpm 설치R.. 2024. 11. 26.
[Docker] NCP 환경에서 Github Actions을 활용한 CI/CD 구축하기 🫗 Docker- 컨테이너 기술을 사용하여 애플리케이션의 실행, 배포, 관리 등을 할 수 있게 해주는 오픈 소스 플랫폼- 애플리케이션에 필요한 구성 요소를 독립적 환경에서 실행할 수 있게 도와줌- 이식성, 빠른 시작, 자원 효율성 등의 장점이 있음. 도커? 그거 VM이랑 뭐가 다른데? ⚒️ 적용 순서우선 도커 공식 사이트 에서 도커 계정을 생성하고 설치한다.도커 계정을 만들었다면 계정 관리 항목에 들어가서 Personal access tokens를 생성한다. 추후에 도커를 활용한 배포에 꼭 필요하니 발급 받아두자.이때, 발급받을 때 Optional을 선택해주고, 키를 발급 받아서 저장하여 사용하도록 한다. 한번 발급 이후 페이지를 나가면 다시 볼 수 없으니, 따로 적어서 저장하여 갖고 있어야한다.여기까.. 2024. 11. 26.
[Spring/Java] JSON 파싱하기 (Jackson 라이브러리) JSON 파싱 - JSON은 Object, Array, Key-Value 형태로 이루어져 있으며 String, Int, Long, Boolean 등의 타입을 지원 - Java에선 JSON을 그대로 사용할 수 없으므로 변환을 하여 사용해야 함. - Jackson 라이브러리를 활용하여 객체 생성 및 변환하여 파싱 1. Jackson 라이브러리 추가하기 // Maven com.fasterxml.jackson.core jackson-databind 버전... // gradle implementation 'com.fasterxml.jackson.core:jackson-databind:버전' 2. 파싱하기(readTree 사용) readTree()를 사용하면 Json의 형태가 key-value 단일 형태이든, Ar.. 2024. 4. 20.
[Spring/Java] curl 명령어로 HTTP 통신하기 Curl(Client Url) - 프로토콜들을 이용해 URL로 데이터를 전송해 서버에 데이터를 보내거나 가져올떄 사용하는 명령어 - 주로 리눅스 환경이나 Postman을 사용할 수 없는 환경에서 사용하는 명령어 GET 요청 curl -X GET http://localhost:8080/~~ POST 요청 1. JSON 일반 데이터 전송 curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://localhost:8080/~ 2. 헤더에 넣어 요청할 경우 (데이터 x) curl -X POST -H "Content-Type: application/json" -H "Authorization: Beare.. 2024. 4. 20.
[Spring/Java] Spring 인터셉터 구현하기 스프링의 여러가지 기능 중 인터셉터 기능을 구현 및 정리해보고자 한다. 앞서 인터셉터 기능을 프론트/리액트를 이용하여구성 해봤으나, 백엔드/스프링에서는 구현해본 경험이 없기에 간략하게 정리하려한다. 코드는 앞서 로그인 구현 시에 작성했던 코드를 사용하였다 Spring 인터셉터란? - HTTP 메서드에서 요청을 가로채서 개발자가 원하는 동작을 추가하는 역할 - 주로 공통 로그 처리, 권한 체크 등의 역할에 사용 (ex : 로그인 해야 이용할 수 있는 페이지) - 로그인 여부에 따른 로그인 페이지 redirect 등 사용 가능 HandlerInterceptor PreHandler() 컨트롤러가 실행되기 전에 실행되며 실행 이전에 요청 정보를 추가하는 경우 사용 return 값은 Boolean 타입으로 적용하.. 2024. 4. 20.
[Spring/Java] 편의성 빼고 로그인 기능 구현하기 (JDBC, H2) Spring 과제 테스트를 준비하기 위해서 Spring 공부를 다시 하면서, 기초되는 부분을 익힐겸 로그인 기능 구현을 목표로 삼았다. 무려 편의성 최고인 Lombok, JPA를 사용하지 않고 구현하려고하니 정말 고통스러웠지만, 어찌저찌 생각한 형태로 구현에 성공했다. 기존과 다르게 InteliJ를 사용하지 않고 VScode로 구현한 경험도 신선한 경험이었다. 기존 프로젝트를 진행하면서 사용했던 코드를 재활용한 것이지만 굉장히 오래걸렸고, 이 과정을 통해 어느 정도 기초 스프링 이해도 증가에 도움이 됐다. 기본 개발 환경 - Java 17 - Spring Boot 2.7.4 - Maven (그냥 Gradle 쓰면 되는데 너무 늦게 깨달았다) - VScode (프로그래머스 내부 IDE 환경이 VScode여.. 2024. 4. 18.
반응형