반응형

backend 9

도대체 CI/CD는 뭘까?

백엔드개발뿐만 아니라 많은 개발에 있어 CI/CD라는 표현을 자주 들어 봤을 것이다. 그런데 CI/CD는 정확히 어떤 걸까? 기본적으로 CI/CD Software Engineering에서 주로 사용되는 표현이다. 개발과정과 운영방식에 대한 방법론적인 표현으로 CI/CD자체는 어떤 개발툴이나 개발언어를 지칭하는 것이 아니다. 즉, 안 지킨다 해서 개발을 못하고 그런 건 아니다. 하지만, 우리가 개발한 Application의 유지 관리와 개발 그리고 개선하는 입장에서 필요한 상식이다. CI/CD는 Continuous Integration/ Continuous Deployment의 약자로 지속적인 통합 지속적인 배포를 뜻한다. 즉, Application을 만들고 해당하는 기능들을 지속적으로 통합하고 통합한 내..

도대체 Docker는 뭘까요?

Docker는 귀여운 고래 로고가 있는 platform이다. 이 플랫폼에서는 우리가 만든 Application을 실행할 수 있는데 이 부분이 크게 와닿지 않을 수 있다. 하지만 이렇게 생각해 보면 된다. 우리가 개발한 프로젝트의 개발 환경은 배포될 환경과 차이가 있을 수밖에 없다. 예를 들어 지금 내가 사용하고 있는 개발환경은 MacOS이지만 배포된 환경은 Linux Ubuntu이다. 물론 Ubuntu환경에 자신이 만든 프로젝트가 실행될 수 있게 환경을 일치시킬 수 있다. 하지만 환경을 구성하는 요소가 하나라도 바뀌거나 배포 환경의 변화가 있을 시 우리는 다시 환경설정을 해줘야 하는 불편함이 있고 이는 안정적인 서버운영을 저해하는 요소이기도 하다. 물론 이와 관련해서 VM이라는 좋은 방법이 있지만 VM과..

WHY: Nginx 용량 재한, 왜 사진이 1MB 이상이면 업로드가 되지 않을까?

프로젝트를 진행하던 도중 클라이언트를 개발하는 프런트개발 쪽에서 아래와 같은 질문이 들어왔다. 문괜님 1MB 이상 사진이 안 올라가지는데요? 그 당시 이런 질문에 답하고 해결하기 위해 아래와 같은 생각을 했다. 이미지는 지금 현재 MultipartFile인데 Spring에서 이와 관련한 용량 재한이 있는 걸까? 모든 요청이 Nginx의 Web Server를 통해서 들어오고 있는데 그와 관련한 재한이 있는 걸까? 그럼 클라이언트에서 사진을 압축해서 보내면 되는 거 아닌가? 첫 번째는 간단하게 application.properties에 들어가 확인이 가능했고 아래와 같이 금방 확인이 가능했다. 여기서 위에 보이는 max-file-size는 Multipart와 관련해서 최대 사이즈를 설정하는 부분이다. 그리고..

Backend Dev./Why? 2023.12.15

Spring Boot 개발 노트: S3를 이용해 프로젝트에 이미지관련 CRUD 구현 2편 - Spring Boot 설정

S3를 이용해 프로젝트에 이미지 관련 CRUD 추가하기 - S3 & IAM 설정 Spring Boot 개발 노트: S3를 이용해 프로젝트에 이미지관련 CRUD 추가하기 - S3 & IAM 설정 많은 프로젝트에서 이미지가 필요하다. 그런 이미지를 저장하고, 읽어오고, 수정하고 마지막으로 삭제하기 위해서는 어떻게 해야 할까? 생각해봐야 하는 것들 먼저 이미지가 어떻게 저장되는지 youcanbeable.tistory.com 저번 편을 통해서 현재 프로젝트가 이미지를 처리하기 위해 아래와 같이 준비 됐다. 이미지가 실제로 담길 저장소 이미지가 담긴 저장소를 쓸 권한 프로젝트와 저장소 연결 프로젝트 내의 이미지 관련 요청 처리 구현 그럼 여기서부터 프로젝트의 이미지 처리를 위한 프로젝트 설정과 요청처리를 구현해 ..

Spring Boot 개발노트: application.properties .gitignore에 추가

일단 application.properties를 gitignore에 추가하는 것은 안된다! 대신 application.properties에 다른 application-something.properties를 import 해 오고 해당 properties를 gitignore에 추가하면 된다. 그래서 아래와 같은 Step을 밟게 될 것이다. application-something.properties 생성 및 입력 application.properties 수정 및 테스트 gitignore에 추가 및 테스트 먼저 resources 디렉터리에서 우클릭 혹은 cmd+n을 눌러 아래와 같이 new 탭에서 Resource Bundle을 찾는다. 그다음 application-test라는 이름의 properties 파일을 ..

도대체 Nginx는 뭘까요?

HTTPS를 적용하기 위해서 그리고 웬만한 Backend 개발에 있어 Nginx는 한 번쯤은 무조건 들어봤을 것이다. 추가적으로 WAS, Web Server와 HTTPS관련해서 무조건 들어봤을 것이다. 그러면 도대체 WAS, Web Server 그리고 Nginx는 무엇일까? Web Server와 WAS Web Server와 WAS(Web Application Server)의 경우 공통적으로 클라이언트(브라우져)에서의 HTTP 요청을 받고 그 요청을 처리해 준다. 그러면 대표적인 차이가 어떤게 있을까? 여기서 딱 중요한건 한 가지다 바로 '정적'이냐 '동적'이냐의 차이다. Web Server의 경우 정적으로 처리될 수 있는 요청들을 담당한다. 예를 들어 웹사이트의 html, 이미지, css 등의 정적이 요..

Spring Boot 개발 노트 : 프로젝트 HTTPS 적용 1

Spring Boot의 경우 8080번 Port를 사용하고 React 같은 경우 3000번 Port를 사용한다. HTTP의 경우 80번 Port를 사용하고 SSH의 경우 22번 포트를 사용한다. 그러면 HTTPS의 경우 몇 번 Port를 사용할까? 그리고 여기서 말하는 Port는 무엇일까? 마지막으로 HTTPS와 HTTP의 차이 그리고 어떻게 우리가 만든 프로젝트에 HTTPS를 적용할 수 있을까? 먼저 Port 번호란 무엇일까? 서버와 클라이언트 사이 혹은 서버와 서버 사이의 통신을 할 때 사용 되는 요청과 응답이 지나가는 '도로'라고 생각하면 된다. 정해진 포트로 해당하는 요청이 들어오고 포트번호는 중복될 수 없다. IP주소와는 다른 개념이다. IP 주소는 나의 서버가 포함된 기기의 위치를 표시한다면 ..

도대체 HTTP는 뭘까요?

여태까지 저의 글들을 보면 많이 보인 단어가 있을 겁니다. 그중 하나가 바로 HTTP인데요. 오늘은 HTTP가 도대체 뭔지에 대해 설명드리겠습니다. Hypertext Transfer Protocol HTTP는 사용자의 웹브라우저와 웹사이트를 가지고 있는 서버와의 소통을 위해 존재합니다. 그런 HTTP는 대표적으로 두 가지의 종류가 있는데 첫 번째는 Request 두 번째는 Response입니다. Request(요청)에 부터 설명드리겠습니다. 우리가 웹사이트에서 특정 링크나 버튼을 눌렀을 때 기본적으로 우리의 브라우저는 다른 화면을 보여주거나 우리가 의도한 결과를 보여 줍니다. 여기서 Request는 바로 링크를 누르거나 버튼을 눌렀을 때 생성됩니다. 그럼 그 Request는 어떻게 구성 돼있을까요? HT..

도대체 API는 뭘까요?

저번에 REST API에 이어서 이번에는 API에 대해 설명드리겠습니다. Application Programming Interface API는 개발자가 자신의 프로그램을 위해서 다른 프로그램이나 소프트웨어를 사용할 때 그 구조나 어떻게 구현 됐는지 알지 못하더라도 사용할 수 있게 해 줍니다. 만약 여기서 윗 문장이 이해가 되셨다면 더 이상 읽지 않으셔도 됩니다. 그럼 현실 두 가지 예시를 들어 설명드리겠습니다. 첫 번째 예시로 레스토랑에서 손님이 서버에게 주문을 했습니다. 그럼 여기서 서버들이 음식을 가져다주기 위해서 어떤 게 필요할까요? 음식 레시피? 요리사의 경력? 음식 이름만 알고 그 이름을 주방에 전달만 해주면 됩니다. 그럼 반대로 요리사의 경우 서버에게 음식을 주기 위해서는 어떻게 해야 할까요?..

반응형