전체 글

업무를 하면서 개인적으로 느낀 점을 서술하겠습니다. 틀린 내용이 있을 수도 있다는 점에서 유의 부탁드립니다. 1. 불필요한 CASE WHEN THEN예시나쁜 케이스SELECT emp_id, CASE WHEN salary >= 5000 THEN 'HIGH' ELSE 'LOW' END AS salary_grade, CASE WHEN dept_id = 10 THEN 'HR' WHEN dept_id = 20 THEN 'SALES' ELSE 'OTHER' END AS dept_name, CASE WHEN job_title LIKE '%Manager%' THEN 'MANAGER' ELSE 'STAFF' END AS job_level, -- 추가적인 C..
특정 비즈니스 로직에 있어서 메일 서비스는 동기적으로 실행을 하는 것보다 비동기적으로 수행되는 경우가 많습니다.클라이언트에게 화면이 멈춰있는 듯한 경험을 할 수 있기 때문입니다. 예를 들어 간단하게 A작업이 있다면, A작업이 수행되어 화면에 반영되고 부가적으로 메일 발송이 이루어진다고 할 때동기적으로 작동하게 된다면 1. 클라이언트 A작업을 수행2. 백엔드 서버에서는 A작업을 수행하면서 동시에 B(메일발송)작업 수행for(MailModel mailModel : mailList) { // A 작업 수행 for (User user : userList) { // B 작업 수행(메일 발송) }}3. B작업이 끝나기 전 까지는 A작업도 계속 멈춰있게 됩니다. 비동기 도입 고려비동기 로직을 고민할..
보통 개발 초기에는 로컬에 첨부파일이나 이미지를 저장하도록 설정하지만, 운영 단계에 들어가기 전에 파일 저장소를 어떻게 구성할지를 결정하는 것이 중요합니다. 파일을 서버의 특정 디렉토리에 저장할 수도 있지만, 일반적으로 서버 용량 관리와 이중화(HA) 문제를 고려하여 별도의 스토리지 시스템을 도입하는 경우가 많습니다. AWS에서는 이러한 파일 저장소 문제를 해결하는 서비스를 제공하는데, 그중 대표적인 것이 AWS S3입니다. S3 버킷 설정버킷 만들기 클릭버킷 만들기 세팅 버킷 이름 입력하는 부분 빼고, 나머지 부분은 기본 설정을 그대로 가져갔습니다.  AWS IAM 권한 설정AWS에서는 IAM(Identity and Access Management) 계정을 생성하여 권한을 세분화하여 할당하는 방법을 권..
간단하게 만들어 본 사이드 프로젝트를 백엔드만 배포하려고 할 때 거쳤던 여러가지 배포 방법 고민에 대해 공유하면 좋을 것 같아서 정리해놓으려고 합니다. 그래서 배포란 무엇일까?기획 -> 요구사항 분석 -> 역할 분담 -> 개발 -> 배포 -> 지속적인 서비스 개선 (리팩토링)개발자들이 개발한 앱, 웹 서비스들을 일반 사용자들이 접근할 수 있게 하는 것이 배포라고 할 수 있습니다. 이런 배포를 하려면 컴퓨터 한 대가 필요합니다. 온프레미스 환경이라고 부릅니다.정확히 말하면, 온프레미스 환경은 단순히 입출력 장치가 포함된 컴퓨터를 의미하는 것이 아니라, 물리적인 하드웨어 인프라를 구축하여 우리의 웹사이트를 24시간 안정적으로 운영할 수 있도록 하는 것을 말합니다. 그러나 24시간 365일 서버를 계속 가동하..
· 에러일기
프로젝트를 빌드 후 로컬에서 실행시키려고 했을때, port 8080 was already in use. 라는 에러가 발생 당연하게  cmd를 친 후, netstat -a -o 로 포트의 사용 유무를 확인했지만, 8080포트를 사용하는 애플리케이션 없는 상황 그래서 gpt에게 물어보게 되는데.. 원인은 이런 이유 윈도우에서 os에서 사용하려고 예약된 포트가? 있다고 함!  그래서 다음과 같은 명령어로 해결할 수 있었다.! netsh interface ipv4 show excludedportrange protocol=tcpnetsh int ipv4 set dynamicport tcp start=49152 num=16384 1. dynamic port: 시스템에서 예약된 동적 포트들의 목록을 볼 수 있음.(나..
소켓 통신을 심심해서 구현해보고 찾아보던 와중  저번에는 채팅 어플리케이션을 gpt와 함께 SSE 방식을 사용해서 구현해보았는데 이번에는 spring의 socket 라이브러리인 stomp을 통해 구현해보았다 @Configuration@EnableWebSocketMessageBroker@RequiredArgsConstructorpublic class WssConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry registry) { // 구독 경로 설정 registry.enableSimpleBroker("/sub")..
솜사탕코튼
개발일기