전체 글
-
2025년 회고Memo 2025. 12. 31. 22:38
2025년은 업무적으로는 운영을 통해 `책임감`을 배우고, 개인적으로는 `루틴`으로 나를 다시 세운 한 해였다. 클라우드 운영 업무 2년차에 접어들며 시스템을 안정적으로 지키는 일을 계속 했고,동시에 `현업 요청에 대응하는 업무` 보다 `문제를 구조적으로 없애는 일`에 더 마음이 간다는 것을 확인했다.2025년의 끝자락에는 역할이 바뀌며, 커리어와 삶의 무게를 더 무겁게 바라보게 되었다.근황오랜만의 글이라 그동안 회사에서 한 일을 요약하자면 아래와 같다:기간직무2023년 2월 ~ 2023년 12월플랫폼 개발 업무(백엔드·프론트엔드)2024년 1월 ~ 2025년 10월클라우드 운영 업무(Azure·프라이빗 클라우드(VMware))2025년 11월 ~ 선박 SW 플랫폼 운영,..
-
API 예외 처리Java/SpringBoot 2022. 8. 18. 17:24
기존 방식의 예외처리로는 API 요청 시 예외가 발생하지 않을 경우- 데이터가 정상적으로 반환되지만 예외가 발생하면- 오류 페이지를 반환한다. 그래서 오류 발생 시에도 JSON 형식의 데이터를 반환하도록 한다. API 응답 @RequestMapping(value = "/error-page/500", produces =MediaType.APPLICATION_JSON_VALUE) public ResponseEntity errorPage500Api(HttpServletRequest request, HttpServletResponse response) { log.info("API errorPage 500"); Map result = new HashMap(); Exception ex = (Exception) re..
-
파일 업로드Java/SpringBoot 2022. 8. 18. 17:12
Http form을 서버에 보낼때 여러 항목을 보내기 위해서 `multipart/form-data` 형식을 사용한다. 이를 통해 여러 파일과 폼의 내용을 함께 전송할 수 있다. 서블릿과 파일 업로드1 package hello.upload.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.Req..
-
타입 컨버터Java/SpringBoot 2022. 8. 18. 17:11
Spring Type Converter @GetMapping("/hello-v2") public String helloV2(@RequestParam Integer data) { System.out.println("data = " + data); return "ok"; } url의 파라미터로 들어올때의 data는 문자열 형식인데 스프링의 @RequestParam을 거치면 문자가 정수 형식으로 들어온다. 스프링이 중간에서 타입 변환을 해주기 때문이다. 컨버터 인터페이스 구현 package hello.typeconverter.converter; import lombok.extern.slf4j.Slf4j; import org.springframework.core.convert.converter.Converter..
-
쓰레드 풀(Thread pool)을 이용해 이미지 크롤러 성능 높이기Java 2022. 8. 5. 22:49
쓰레드를 잘 만져서 웹 크롤러의 성능을 높여보도록 한다. 일단 Jsoup을 이용해서 셔터스톡에서 1,000장의 이미지를 스토리지에 저장하는 프로그램을 만들었다. 성능의 측정 기준은 프로그램이 완료하는데 걸리는 시간으로 했다. https://github.com/ghchoi0427/SocketServer/blob/master/src/main/java/threadpool GitHub - ghchoi0427/SocketServer: 멀티쓰레딩, pub/sub 패턴, thread pool 멀티쓰레딩, pub/sub 패턴, thread pool. Contribute to ghchoi0427/SocketServer development by creating an account on GitHub. github.com ..
-
캐시와 조건부 요청Web 2022. 7. 6. 22:32
캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. >> 서버 요청 후 응답으로 얻은 파일 등을 저장해두고 같은 요청을 보낼 때 저장된 캐시를 불러옴으로써 네트워크 자원과 시간을 절약하는 방식이다. 조건부 요청 캐시 유효시간이 끝나서 서버에 다시 요청하는 경우 - scenario 1) 기존 데이터가 변경 되었다 - scenario 2) 기존 데이터가 변경 되지 않았다 기존 데이터가..
-
HTTP 헤더Web 2022. 7. 6. 15:52
HTTP 헤더란? 클라이언트, 서버가 http 전송(요청, 응답)하는데 필요한 모든 부가정보를 담는다. 표현: http를 통해 보낼 실제 데이터 표현 헤더: 표현 데이터를 해석할 정보를 제공하는 데이터 Representation(표현) = Representation Metadata(표현 메타데이터) + Representation Data(표현 데이터) 표현 헤더의 종류 Content-type: 표현 데이터 형식 Content-Encoding: 표현 데이터 압축 방식 Content-Language: 표현 데이터의 자연 언어 Content-Length: 표현 데이터 길이 ... Content Negotiation HTTP에서, 컨텐츠 협상이란 동일한 URI에서 리소스의 서로 다른 버전을 서브하기 위해 사용되..