- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- infra
- 캐싱전략
- SpringBoot
- JPA
- 후기
- Project
- SPRING JWT
- Kotlin
- 팀네이버 공채
- spring
- LazyInitialization
- jenkins
- docker
- 브랜치전략
- EntityTransaction
- 책
- 만들면서 배우는 클린 아키텍처
- chrome80
- 젠킨스
- 리뷰
- 팀네이버
- network
- Java
- 스프링
- container
- Spring Security
- JWT
- websocket
- 프로젝트
- redis
목록기술_개발 (44)
PPAK

기존에 진행하던 이웃사이 프로젝트에서 Jenkins 를 통한 CI/CD 를 구축했었다. 그 덕분에 개발 간에 팀원들은 단순히 깃허브에 코드를 올리는 것 만으로도 서로 작업한 내용을 원격서버에 반영되었고, 직접 배포를 하는 과정을 생략함으로써 전체적인 개발 피로를 줄일 수 있었다. 관련포스팅 [CI/CD] Git Webhook 을 통한 Jenkins-Spring Boot 빌드, 배포 자동화 이전 포스트 에서는 Docker 위에서 Jenkins 개발환경을 셋팅하였다. 본 포스트에서는 실제로 Jenkins project 를 생성하여 빌드 스크립트를 구축하고 Git Webhook 을 이용해 개발자가 빌드 버튼을 매번 누르 ppaksang.tistory.com 문제점 기존의 CI/CD 인프라를 살펴보면, 분명 J..

그 어느 때보다 짧았던 2022년 한 해가 끝나간다. 오늘 졸프 최종 성과발표회가 끝나 찐종강을 하기도 했고, 올해 무엇을 했나 정리도 할 겸 어찌보면 고리타분할 수 있는 한 해 마무리를 주제로 글을 한번 작성해보려고 한다. 올해의 키워드를 세 가지 꼽아보라고 누군가 물어본다면 나는 주저없이 배움, 성장, 도전 이라고 말하고 싶다. 복학 이후 내가 생각하는 가장 운이 좋은 일은 개발이 내 생각보다 더 적성에 잘 맞다는 것이다. 물론 아직 진정한 의미의 개발은 안했을지 모른다. 아니 안했다. 하지만 적어도 지금까지 내가 바라보는 미래 개발자로서의 나의 모습은 굉장히 긍정적이다. 이것은 내가 단순히 재미만 있어서가 아니라 현실적인 어려움등을 같이 고려해봤을 때 내린 결론이다. 내가 생각하는 여러가지 현실적인..

프로젝트 자료 GitHub Youtube 포스팅할 주제들은 산더미인데 프로젝트를 진행하며 전공 학습을 병행하느라 정돈된 글을 작성할 시간이 많이 부족한 것 같아서 아쉽습니다. 그래도 프로젝트 리뷰는 하루라도 빨리 써야 느낀 생각을 잘 남길 수 있을 것 같아서 조금 무리해서 작성합니다. 교내에서 학부 행사 겸 대회를 주최했습니다. 전공에 크게 관심이 없던 학생들도 교내 행사를 통해서 흥미를 붙이는 모습을 보아서 그런지 저는 정말 긍정적인 영향을 주는 행사라고 생각합니다. 주제는 주어진 대구 시 문제를 소프트웨어를 통해서 해결할 수 있는 방법을 모색하는 것입니다. 단 주제가 대회 마감 5일 전에 공개됩니다. 다시 말해 5일 간 기획부터 시연 제품 개발까지 완료해야하는 일종의 해커톤이라고 볼 수 있습니다. 멤..

코틀린과 자바 언어가 비슷한 듯 다른 점에 대해 지난 포스팅 을 통해서 이야기 했습니다. 이번에도 역시 Java 와 Kotlin 에서 중첩 클래스를 선언하는 여러가지 방법과 그 차이에서 오는 시사점이 무엇인가에 대한 제 생각을 밝힙니다. Nested Class(중첩 클래스) 라는 것은 기본 적으로 둘 이상의 클래스가 연관 관계(주로 계층 관계) 가 있을 때 이를 논리적인 그룹으로 묶어 코드의 가독성을 높이기 위해 존재합니다. 다만 이러한 중첩 클래스의 선언 방식에 따라서 JVM 이 인스턴스를 메모리에 다른 형태로 저장한다는 것을 알아야 했습니다. JAVA 우선 아래는 Java 에서 선언 가능한 중첩 클래스의 종류입니다. 아래 예시 외에도 Method Local Inner Class, Anonymous I..

첫 스프링 프로젝트의 MVP 작업이 끝나고 클라이언트 개발팀의 QA 를 하고 있는 상황에서 중간 중간 시간이 길게 비는 듯한 느낌이 들어 미루고 또 미루었던 코틀린에 대해서 학습을 해볼까하고 작일 자정부터 입문을 했습니다. 사실 학습한지 하루 밖에 안된 상황에서 이렇게 포스팅을 쓰는 것이 다소 부끄럽게 느껴지긴 하지만, Java 언어와 매우 유사한 형태의 문법을 가지고 있어서 생각보다 빠르게 많은 정보가 들어와 첫 사용 당시의 느낌과 함께 학습 내용을 정리해보고자 합니다. (본 포스팅의 내용이 다소 부정확할 수 있으며 추후 학습을 이어나가면서 수정할 예정입니다. 현재는 소감문 정도로 봐주시면 감사하겠습니다.) 코틀린 자체가 완전히 새로운 패러다임은 아니지만 JVM 에서 동작하던 기존의 Java 언어를 개..

아직 대회와 프로젝트 개발이 끝난 것은 아니지만 MVP 레벨의 기능 개발도 어느 정도 마무리가 된 것 같아서 최근 약 두 달간 어떻게 개발을 진행해 왔는지 살펴보고 쉬어가며 소감도 한번 작성해보고자 합니다 !! 프로젝트 시작 전 복학 후 두 학기를 정말 학교 생활에 집중했던 것 같습니다. 열심히 하고자 다짐한 것도 있지만 예상보다 CS 공부나 코딩이 조금 더 저에게 잘 맞았고 덕분에 두 학기 모두 좋은 성적으로 마무리할 수 있었던 것 같습니다. 무슨 자신감이었는지는 모르지만 3학년 1학기에는 회사 이곳저곳에 포트폴리오를 작성하여 내보기도 하고 코딩 테스트를 응시하기도 했습니다. 크게 기대는 안했지만 역시나 모두 광탈을 했고 그 과정에서 제가 무엇이 부족한지에 대해 성찰을 했던 것 같습니다. 어떤 개발자가..

프로젝트를 기획하면서 가장 무모(?) 하게 도전한 챌린지 중에 하나가 WebSocket 사용이였던 것 같습니다. 사실 WebSocket 이라는 것도 찾아보고 안 것이지 기획 단계에서는 그저 "비동기적으로 서버 측에서 브라우저로 메세지를 날리는 것" 정도로 이야기하고 넘어갔던 것이 기억납니다. 그 때 당시에는 브라우저와 파이프라인을 만드는 써드파티 라이브러리가 있지 않을까? 혹은 아무 방도가 없어라도 서버로 비동기적으로 호출을 날려놓고 이벤트가 발생하면 응답해주는 방식으로 구현하면 되지 않을까? 라며 어떻게든 해답이 있을거라 판단하였습니다. MVP 가장 마지막 개발 기능으로 추가해 놓은 "서버에서 역으로 메세징 하기" 는 자료조사 끝에 WebSocket 이라는 통신 프로토콜을 이용해 구현이 가능하다는 것..

프로젝트에서 본격적으로 Redis 를 사용하기 위해서는 로컬에서 실행중인 Spring Container 와 Redis Container 간의 연결이 필요했습니다. 일반적으로 OS 위에서 실행하는 JVM 과 Redis 는 host network 를 사용하여 손쉽게 연결할 수 있지만 Docker 는 컨테이너 간 네트워크 역시 격리시켜놓았기 때문에 같은 네트워크를 사용하고자 한다면 컨테이너를 잇는 네트워크 브릿지를 생성하고 이어주어야 합니다. $ docker network ls 위 명령어를 통해 docker 에서 기본적으로 생성해놓은 네트워크를 확인해보면 host 와 bridge 가 존재하는 것을 확인할 수 있습니다. $ docker network inspect bridge 별도의 연결 네트워크를 명시하지않은..

제가 서버에 채택한 인증 방식은 JWT 를 활용한 Access Token 교환 방식입니다. 서버 측에서는 사용자가 정상적으로 로그인을 마치면 사용자 인증 정보를 포함하는 Access Token 과 이를 재발급할 수 있는 Refresh Token 을 생성하여 발급합니다. 이후에 클라이언트는 발급된 Access Token 을 서버에 제출하기만 하면 정상적인 사용자의 요청으로 간주될 수 있습니다. 해당 인증 방식을 구현하는 과정에서 여러가지 보안적인 측면을 고려하지 않을 수 없는데 가장 대표적으로 XSS, CSRF 공격에 대한 방어가 핵심이 될 수 있습니다. 본 포스팅 에서는 어떤 방식으로 토큰을 발행하고, 어디에 저장을 하는 것이 옳은가에 대한 고민과 결과를 적어보겠습니다. 이전 글에서는 CORS 허용 정책..

이전 게시글 에서 로컬 환경에서 SSL 인증서를 발급하고 https 를 적용해 보았습니다. 하지만 로컬에서 발급한 인증서는 공식적인 CA(Certificate Authority) 기관에 등록되어있지 않기 때문에 원격 서버에서 사용 시 브라우저에서 경고메세지와 함께 접근을 차단합니다. 따라서 CA 기관에 인증서 발급 요청을 하고 등록을 하는 과정이 필요합니다. 보통의 CA 기관은 일정 가격을 지불하고 복잡한 절차를 거쳐 인증서를 발급하지만 개인적인 토이 프로젝트를 진행하면서 비용을 지불하기란 쉽지 않습니다. 여기서 Let's Encrypt 라는 비영리 CA 기관은 https 의 확산에 기여하기 위해 무료로 SSL 인증서를 발급해주고 있습니다. 이번 프로젝트 에서는 Let's Encrypt SSL 인증서 발..