![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/czQfdj/btsl6Me4v8T/zYi2mK26gGNKuKyu8vVh91/img.png)
대부분의 사이트는 회원을 위한 서비스를 제공하기 위해 회원가입/로그인 기능을 제공합니다. 롤문철 닷컴은 마이페이지, 투표하기, 댓글달기, 재판 상세내용 조회 등 여러가지 서비스가 로그인을 필요로합니다. 그래서 '로그인 기능'을 위한 2가지 방안을 검토했습니다. ◼︎ JWT 토큰 ◼︎ 세션 어떤 방안을 선택할지 고민한 끝에 서비스의 보안성이 가장 중요하다고 생각하여 '세션'을 선택하게 되었습니다. '로그인 기능'의 요구사항은 다음과 같습니다. ✓ 로그인 ✓ 로그아웃 ✓ 악의적인 사용자 강제 로그아웃 ✓ 동시 접속자 1,000명 처리 ✓ 평균 응답시간 1,000ms 이내 위 요구사항을 JWT 토큰, 세션 두 가지 관점에서 설계/구현/성능검증(테스트)하고, 최종적으로 서비스의 '로그인 기능'에 세션을 활용하게..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bpSJgL/btskYKKIykj/nJGJP70f3WE1Xwz0SGKqO0/img.jpg)
코드를 작성하고 GitHub에 Push한 경험이 있으신가요? 방금 Push한 코드를 서버에 반영하려면 어떻게 해야될까요? 매번 GitHub에서 새 버전의 코드를 다운받고, Jar를 빌드해서 서버에 옮겨주고, 서버를 재시작하는 일련의 과정을 반복하겠죠. 이런 과정이 자동화된다면 얼마나 편할까요? 이번 글에서는 배포를 자동화해주는 CD(Continous Delivery) 파이프라인 구축 과정을 살펴보겠습니다. 글을 시작하기 전에 먼저 CD 파이프라인이 어떻게 동작하는지 워크플로우를 살펴보겠습니다. CD 파이프라인 워크플로우 GitHub 에서 관리하는 레포지토리의 master 브랜치에 코드가 push되면, Jenkins에게 wehook을 날린다. Jenkins가 빌드, 도커 이미지를 생성한다. 생성된 도커 이..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b96CI2/btskfsqM9ee/gndJRLmzX3Q6xkk2KezCN1/img.png)
이번 시간에는 CI(continous Integration) 환경을 구축해보겠습니다. 먼저 CI 파이프라인의 워크플로우부터 살펴보겠습니다. CI 파이프라인 워크플로우 개발자가 GitHub 레포지토리에 Pull Request를 올립니다. GitHub는 Pull Request 생성 이벤트가 발생하게되면 Jenkins에 web-hook을 전송합니다. Jenkins가 프로젝트의 빌드 스크립트를 읽어들여 빌드를 진행합니다. 테스트코드를 실행 결과가 실패일 경우, 빌드 fail을 일으킵니다. 테스트 커버리지를 분석하여 80% 미만인 경우, 빌드 fail을 일으킵니다. Jenkins가 빌드 결과를 GitHub에 전송합니다. 빌드 결과에 따라 GitHub의 merge 버튼이 활성화/비활성화 됩니다. Jenkins 서버..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/StSSi/btskgIzUoFT/vTVEm539IhoaAHLusS5LU0/img.jpg)
CI/CD란 무엇인가? Wiki는 CI/CD를 다음과 같이 정의하고 있습니다. 소프트웨어 공학에서 CI/CD는 지속적 통합(continuous integration)과 지속적 배포(continuous delivery)가 결합한 사례를 의미한다. CI/CD는 소프트웨어의 개발, 테스트와 배포를 모두 통합함으로써 소프트웨어 버그를 쉽게 찾아낼 수 있으며, 더 빠른 배포 주기를 가질 수 있게 만들어 준다. - wiki CI/CD의 사전적 정의도 중요하겠지만, 저는 경험과 실습을 통해 CI, CD를 다음과 같이 정의내렸습니다. CI(continous integration)는 다수의 프로그래머가 함께 작업하는 환경에서 지속적이면서 쉽게 코드를 통합할 수 있도록 지원하는 개발 환경을 말합니다. CI 에는 빌드, 테..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/9zsRe/btsiBKripbg/ARzliulBN9nazFkwhbdqP1/img.jpg)
안녕하세요. 오늘은 향로님께 멘토링 받은 이야기를 공유드립니다. 디지털 청년 고민 해결단이란 무료 멘토링 서비스입니다. 저도 지인으로부터 알게 되었는습니다. 창업/법률/기술/청년멘토링으로 분류되며 분기마다 신청이 가능합니다. 저는 이동욱(향로) 멘토님께 멘토링을 신청하였습니다. 후기 요즘 개발자로 취업하기 위해 면접을 다니기 시작했습니다. 면접이 끝나면 복기를 하곤 하는데요. 어떻게 대답했어야 할지 답을 알기 어려운 질문들이 있었습니다. 혼자 오랜 시간 고민해봐도 해답을 찾기 어려워서 이동욱 멘토님께 도움을 요청드렸습니다. 2023년 6월 3일 Zoom 화상 미팅으로 멘토링이 진행됐습니다. 이동욱 멘토님과 4명의 멘티들이 참여했습니다. 멘티들의 이력서와 최근 고민거리를 바탕으로 이야기를 나눴습니다. 이동..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Ke6jf/btsigEsXx8Z/SGLAwNYcZQho6NggeAqOFk/img.png)
안녕하세요. 면접 회고겸 NHN 엔터프라이즈 C인터뷰 후기 글을 공유합니다. C인터뷰는 일반적인 인성면접이라고 생각하시면 됩니다. NHN 엔터프라이즈 면접 내용 직무: Java 백엔드 개발자 (3년차 경력직) 장소: NHN 플레이뮤지엄 날짜: 2023년 6월 2일 진행시간: 1시간 면접관은 두 분이셨습니다. (인사 담당자 + 개발 팀장님) "인성면접은 형식일 뿐이다"라는 얘기를 들어본 적이 있는데요. 전혀 그렇지 않다고 생각합니다. 저의 경험과 생각을 검증하는 질문이 반복해서 쏟아졌습니다. 저는 제조 기업에서 만 2년을 근무한 경험이 있는데요. 퇴사를 한 이유를 제게 물어보셨고, 이전 직장의 기술 부채와 매너리즘을 퇴사 이유로 설명드렸습니다. 이와 관련된 디테일한 질문들이 계속 들어왔습니다. 퇴사를 했다..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/biJV8Z/btsijYYGLA1/rIhKg26CHvTiK2Pkpmdi4K/img.png)
안녕하세요. 요즘 이곳 저곳 맘에 드는 기업에 서류를 넣어봤습니다. 운이 좋게도 NHN 엔터프라이즈 서류 전형에 합격하였습니다. 서류 합격 후 5일정도 뒤에 T인터뷰(기술면접)을 봤습니다. 면접을 대비하면서 면접 후기 글을 찾아봤는데 거의 없더라구요. 그래서 저랑 같은 공고에 지원하신 분들께 조금이나마 도움이 되고자 후기 글을 올립니다. (+ 면접 회고도 할겸...) NHN 엔터프라이즈 면접 내용 직무: Java 백엔드 개발자 (3년차 경력직) 장소: NHN 플레이뮤지엄 날짜: 2023년 5월 9일 진행시간: 1시간 면접관으로는 실무 개발자 세 분이 들어오셨습니다. 저의 소개로 면접이 시작됐습니다. 대부분의 질문은 경력 기술서 바탕이었습니다. 걱정했던 부분이 라이브 코딩이었는데, 라이브 코딩은 진행하지 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bb12FI/btsgmEVTeBQ/UYHopPnhHE5gBZX0gck1b0/img.jpg)
운영 환경의 application.yml 와 테스트 환경의 application.yml 를 분리해야 합니다. 왜 그래야할까요? 운영 환경과 테스트 환경의 차이를 생각해봅시다. 운영 환경 vs 개발 환경 운영 환경 실제 고객을 대상으로 서비스를 제공한다. 많은 사용자가 사용하므로 데이터의 규모가 크다. 따라서 데이터를 데이터베이스 서버에 저장해야한다. 개발 환경 개발 및 테스트를 목적으로 한다. 고객이 존재하지 않으므로 데이터의 규모가 작다. 따라서 데이터베이스 서버에 데이터를 저장해야한다. 인메모리를 활용해도 목적을 이룰 수 있다. 이 외에도 여러 차이가 존재할 수 있습니다. 핵심은 두 환경의 요구사항이 다르다는 것입니다. 따라서 각 요구사항을 만족시킬 수 있는 설정 파일이 각각 필요합니다. 이 글에서는..
- Total
- Today
- Yesterday
- 배열리스트
- NHN 엔터프라이즈
- 디지털 청년 고민 해결단 온라인 멘토링
- NHN 면접
- 랠릿
- T 인터뷰
- 회고
- F-LAB
- java 로그인
- CI/CD 파이프라인
- CI/CD
- 분산락
- JWT 토큰
- application.yml 분리
- 비관적락
- Jenkins
- NHN 엔터프라이즈 면접
- C 인터뷰
- 디지털 청년 고민 해결단
- CD 파이프라인 구축
- 데이터베이스 동시성
- Docker 자동화 배포
- application.properties 분리
- 동시성 이슈
- Spring Application 서버 실행
- 낙관적락
- HTTP 완벽 가이드
- 더미데이터 생성
- GitHub Webhook
- 개발자 면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |