본문 바로가기
반응형

Develop/etc61

[백엔드 실무 스터디] 5, 6, 7. 비동기, 동시성, I/O 병목 제어 서론이 글은 '주니어 백엔드 개발자가 반드시 알아야 할 실무 지식' 책을 읽고 진행하는 스터디 내용을 정리한다. 책을 읽고 학습하는 게 아니라, 책의 내용을 주제로 경험을 공유하는 스터디이기 때문에 포스팅 내용은 책과 관련이 없다. 이번 글은 '5장 비동기 연동, 언제 어떻게 써야 할까', '6장 동시성, 데이터가 꼬이기 전에 잡아야 한다', '7장 IO 병목, 어떻게 해결하지'를 읽고 진행한 스터디 내용을 정리했다. '(경험 공유)' 혹은 '(생각 공유)' 표기는 스터디원들이 실무에서 겪은 개인적인 경험이나 생각을 정리한 것이며, 항상 정답은 아니다. 5장 비동기 연동, 언제 어떻게 써야 할까 (경험 공유) 비동기 적용 사례병렬 처리를 위한 코루틴 적용알림톡 발송카프카에서 이벤트 컨슘 시 사용ack .. 2025. 8. 17.
[백엔드 실무 스터디] 3, 4. DB와 외부 연동 서론이 글은 '주니어 백엔드 개발자가 반드시 알아야 할 실무 지식' 책을 읽고 진행하는 스터디 내용을 정리한다. 책을 읽고 학습하는 게 아니라, 책의 내용을 주제로 경험을 공유하는 스터디이기 때문에 포스팅 내용은 책과 관련이 없다. 이번 글은 '3장 성능을 좌우하는 DB 설계와 쿼리', '4장 외부 연동이 문제일 때 살펴봐야 할 것들'을 읽고 진행한 스터디 내용을 정리했다. (경험 공유) 표기는 스터디원들이 실무에서의 경험을 정리한 것이며, 항상 정답인 예제가 아니다. 3장. 성능을 좌우하는 DB 설계와 쿼리 선택도 (58p)인덱스에서 특정 컬럼의 고유한 값 비율선택도가 높다 = 고유값이 많다 커버링 인덱스 (59p)인덱스 안에 포함된 데이터를 사용하므로 실제 데이터에 접근할 필요 없음.쿼리를 충족.. 2025. 8. 4.
[백엔드 실무 스터디] 2장. 느려진 서비스 살펴보기 서론이 글은 '주니어 백엔드 개발자가 반드시 알아야 할 실무 지식' 책을 읽고 진행하는 스터디 내용을 정리한다. 책을 읽고 학습하는 게 아니라, 책의 내용을 주제로 경험을 공유하는 스터디이기 때문에 포스팅 내용은 책과 관련이 없다. 이번 글은 '2장 느려진 서비스, 어디부터 봐야 할까'를 읽고 진행한 스터디 내용을 정리했다. (경험 공유) 표기는 스터디원들이 실무에서의 경험을 정리한 것이며, 항상 정답인 예제가 아니다. 2장. 느려진 서비스, 어디부터 봐야 할까수직 확장 & 수평 확장 (26p)(경험 공유) CPU 수치에 따라 스케일인/아웃되는 auto scaling group 설정사용자 적은 시간대는 스케일인을 해둔다던가 다양한 조건으로도 설정 가능DB 스케일은 직접 다룰 일이 없다 (DBA에게 요청.. 2025. 7. 5.
구조적 동시성 이해하기 (feat. goto의 역사) 이 글은 'Notes on structured concurrency, or: Go statement considered harmful'을 번역한 글입니다. 원작자의 허락하에 번역하였음을 분명히 밝힙니다. 좀 더 쉬운 표현을 위해 의역한 부분도 있으니, 원문이 궁금한 분들은 링크를 참고하시길 바랍니다. Thanks to Nathanial J. Smith for allowing the translation. Notes on structured concurrency, or: Go statement considered harmful — njs blogvorpus.org 모든 동시성 API는 코드를 동시 실행할 방법이 필요하다. 다음은 몇 가지 예시다.go myfunc(); .. 2024. 12. 23.
[Git] 머지 커밋 revert 하기 🤔 git revert란? git revert란 일부 기존의 커밋들을 되돌리는 작업이다. git reset과는 다른 것이, git reset은 기존의 커밋을 아예 삭제해버린다. 하지만 git revert는 변경 사항을 되돌린 커밋을 하나 새로 생성한다. 예를 들어 아래와 같은 커밋 A, B, C가 있다고 가정해보자. (알파벳은 커밋을 구분하기 위해 임의로 붙인 이름이다.) 이 때 커밋 C의 변경 내역을 reset, revert를 통해 되돌린다면 어떻게 될까? 커밋 내역을 살펴보면 git reset은 커밋 C에 대한 기록이 아예 없어진다. git revert는 새로운 커밋 X가 생긴다. 커밋 X의 변경 내역을 살펴보면, 커밋 C에서 변경했던 코드들이 그 이전 상태로 돌아가있다. git reset을 사용하는.. 2023. 8. 13.
Windows에서 8080 port 사용이 불가능한 현상 💣 사건의 시작 로컬에서 프로젝트를 실행 시키다가 java.net.BindException: Address already in use: bind 에러가 발생했다. 내가 실행시키려던 8080 포트가 충돌이 일어나서 발생한 에러이다. 해결책은 간단하다. 1. PID 조회 Linux $ lsof -i:포트번호 Windows $ netstat -ano | findstr "포트번호" 2. 프로세스 종료 $ kill PID번호 💥 문제의 발생 8080 포트의 PID를 조회하기 위해 netstat을 실행시켰다. 그런데... 명령어가 잘못되었나 싶어서 이미 구동중인 포트 번호로도 확인해보았다. 😡 의심되는 원인 발견 windows와 8080 port 키워드로 이것저것 구글링 하다보니 hyper-v라는 키워드를 발견하게.. 2022. 9. 18.
[IntelliJ] gradle project 생성 시 불필요한 파일들이 생기는 현상 IntelliJ에서 gradle project를 생성했는데 위와 같은 불필요한 폴더들이 막 생겨났다. 좀 더 정확히 말하자면 gradle project를 생성했을 때까지는 괜찮았는데 프로젝트를 build시키는 시점에서 이상한 폴더들이 생겨났다. 알고보니 Gradle user home이 제대로 설정되지 않아서 발생한 문제였다. 문제 원인은 Gradle user home이 프로젝트 경로로 설정되어 있어서이다. 해당 경로를 수정하면 해결된다. (아래에서 추가 설명) 그렇다면 위 폴더들은 왜 생겨나는걸까? project를 build시켜 gradle이 동작되면 gradle에 대한 캐시가 생긴다. 그래서 일반적으로는 프로젝트와 무관한 특정 위치에서 이 캐시들을 한꺼번에 관리한다. 이 위치는 별도로 지정하지 않았다면.. 2022. 9. 2.
OAuth vs OpenID 예제로 자주 등장하는 `줍줍`은 현재 진행되고 있는 프로젝트 명으로 슬랙 메시지를 백업해주는 서비스입니다. 이 글을 읽기 전에 인증과 인가의 차이를 알고 있다면 훨씬 이해하기 편합니다. 인증; authentication: 사용자의 신원을 확인 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여 🧾 OAuth 🧾 인가 / authorization 서버 자원 소유자가 클라이언트에게 서버 자원에 대한 액세스 토큰 제공 ex: Slack이 줍줍에게 access token을 발급 해당 액세스 토큰을 통해 리소스 서버에 액세스 가능 ex: access token을 통해 줍줍이 Slack에게 사용자 정보 조회 요청 ✅ OAuth 1.0 vs OAuth 2.0 OAuth 2.. 2022. 8. 31.
[OAuth] 슬랙 로그인 구현하기 목차 1. OpenID vs OAuth vs OIDC 2. OAuth 인증 과정 3. 로그인 동의 화면 4. 로그인 API 구현하기 `줍줍` 프로젝트는 슬랙을 이용해 로그인하는 기능을 제공할 예정이다. 해당 기능을 개발하는 과정을 이야기 해보려 한다. 1. OpenID vs OAuth 📚 OpenID, OAuth는 인증, 인가에서 사용되는 HTTP 기반 프로토콜이다. OpenID -> 인증; authentication: 사용자의 신원을 확인 OAuth -> 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여 더 자세한 내용 👉 https://yeonyeon.tistory.com/264 OAuth vs OpenID 예제로 자주 등장하는 `줍줍`은 현재 진행되고 .. 2022. 7. 31.
반응형