4월경에 끝난 프로젝트이지만 지금이라도 프로젝트 회고를 남겨봅니다.기획 "여의도 꿀통"은 선거 후 관심도가 떨어지는 문제, 정치의 복잡성, 그리고 지지할 정당이나 정치인의 부재로 인한 무관심을 해결하기 위해 기획했습니다. 투표 이후에도 꾸준히 정치에 관심을 가질 수 있도록 돕고, 정치적 결정 과정을 보다 쉽고 이해하기 쉬운 형태로 제공함으로써, 정치에 대한 접근성을 높이고자 했습니다.README자세한 기능소개, 데모영상은 리드미에 포함되어 있습니다.https://github.com/JaegeonYu/HoneyPot GitHub - JaegeonYu/HoneyPot: 국회의원의 공약이행률부터 발의법안까지 모든 정보를 제공해주는 서비스국회의원의 공약이행률부터 발의법안까지 모든 정보를 제공해주는 서비스, 여의..
최근 SSAFY에서 프로젝트 회고를 하며 Jenkins, Nginx 등 특정 기술을 사용한 이유를 정리할 기회가 있었습니다. 그러다 MySQL, Spring을 거슬러 웹 개발을 위한 언어로 JAVA를 선택한 이유를 떠올려봤습니다. 졸업프로젝트를 하며 비즈니스 로직 설계하는 백엔드에 흥미를 느꼈지만, 처음 접한 자바스크립트 + Express.js보다는 Java + Spring을 택했습니다. 전공자로서 자바 프로그래밍, 네트워크 프로그래밍 등의 수업에서 자연스럽게 노출되었고 대한민국 백엔드풀은 자바가 압도적이라 선택했습니다만 시장에서 이런 점유율을 차지할 수 있던 이유는 개발자가 서비스 자체에 집중해줄 수 있게 해줘서 인것 같습니다. 1. Write once, run anywhere를 위한 JVM으로 운영체..
도커는 애플리케이션 계층의 추상화, 커널을 공유함(운영체제 단위의 포트 공유하기에 같은 번호 포트 사용은 안됨) spring, db, 1. docker run jar 2. docker run -p 8080:8080 jar 3. docker run -p 8080:8080 jar & EC2 보안 설정 인바운딩 8080 허용 4. docker run -p 8080:8080 jar & EC2 보안 설정 인바운딩 8080 허용 && docker run -p 33006:3306 db & EC2 보안 설정 인바운딩 3306 허용 application.yml db.url = EC2 IP db.port = 3306 5. docker run -p 8080:8080 jar & EC2 보안 설정 인바운딩 8080 허용 && ..
프록시 서버 왜 쓸까?기본 웹 서비스 통신의 방식입니다.www.naver.com을 치면 이런 화면을 받아오는 것과 같습니다. 이후 로그인을 하는 등 비즈니스 로직과 관련된 부분을 동작하면 백엔드에 요청하고 응답받은 리소스를 활용해 화면을 재구성합니다 웹 서비스 인프라를 구축하며 서버의 프론트엔드의 3000번과 백엔드의 8080번 포트를 모두 직접 노출을 했습니다. 하지만 그 앞단에 프록시 서버를 두면 아래와 같이 통신하고 다음과 같은 장점들을 갖습니다. Nginx를 프록시 서버로 활용해 아래와 같은 이점을 살렸습니다. 1. 리버스 프록시 기능으로 백엔드, 프론트엔드의 포트노출을 최소화2. SSL 오프로딩으로 하위 백엔드 서버와 프론트엔드 서버는 http 통신만으로 부하를 줄이고 인증서 유지보수 간소..
https://github.com/kanggeonnim/PerspectiView?tab=readme-ov-file GitHub - kanggeonnim/PerspectiView: 시점으로 보는 작품, 시작시점으로 보는 작품, 시작. Contribute to kanggeonnim/PerspectiView development by creating an account on GitHub.github.com 이전까지 개인 토이프로젝트, 2인 프로젝트는 경험해봤지만 6인 팀프로젝트와 팀장은 특히 더 무거웠습니다..자세한 기획과 기능 데모는 깃허브를 통해 확인하실 수 있습니다. 프로젝트에서 제가 맡았던 부분 위주로 회고 시작하겠습니다. 저는 평소에 웹툰, 웹소설을 즐겨보는 독자지만 작품 설정 관리가 안되는 작품들..
취업준비를 하면서 어느정도 큰 회사는 지원을 위해 어학 성적을 요구해서 준비를 해야겠다고 생각했고 이전에 토익, 토스, 오픽을 준비해본적은 없었습니다. 알아보니 프리토킹이랑은 거리가 멀었기에 토익스피킹을 준비했습니다. 3주정도는 하루에 30분 정도 공부하고, 시험보기 1주일 전부터 하루 1시간 정도 공부했습니다. 처음엔 유튜브 제이크쌤만 봤는데 모의고사 해설영상을 들어도 어느정도 템플릿이 있는 토익스피킹을 체계적으로 공부하고 있지 않은거 같아 28시간에 끝내는 토익스피킹 스타트 책을 사고 유형별로 체계적으로 공부를 시작한 것 같습니다. 처음 공부하는데 책에서 1주 or 2주 커리큘럼을 제시해줘서 공부하기 수월했고 유형별로 적용되는 템플릿의 틀을 익히고 나서부터는 유튜브에서 찾을 수 있는 토익 모의고사 +..
페치 전략에 따라도 다르지만 영속성 컨텍스트에 어떻게 추가하는지에 따라 또 달라집니다. EAGER Fetch EntityManager.find() find 메소드와 EAGER 페치전략을 사용하면 inner join으로 N+1문제 없이 주로 같이 조회가 되는 연관관계의 경우에 사용할 수 있습니다. EntityManger.createQuery() EAGER 페치전략을 사용해도 EntityManger.createQuery(JPQL)를 사용하면 한 번의 쿼리에 정보를 모두 가져오지 않지만 EAGER 페치전략을 사용하기 때문에 곧바로 N+1 문제가 터집니다. Spring Data JPA JpaRepository의 기본구현체인 SimpleJpaRepository의 findById 와 findAll, 커스텀 find..
트랜잭션이란 데이터를 저장할 때 단순히 파일에 저장해도 되지만, 데이터베이스에 저장하는 가장 큰 이유입니다. 트랜잭션은 그대로 번역하면 거래인데, 데이터베이스에선 하나의 거래를 안전하게 처리하도록 보장합니다. A가 B에게 5000원 이체한다면, 아래 두개의 작업이 하나처럼 이뤄져야합니다. 1. A의 잔고 5000원 감소 2. B의 잔고 5000원 증가 1번이 성공하고 2번이 실패하고 그대로 반영된다면 A의 잔고만 5000원이 감소하는 문제가 발생합니다. 데이터베이스는 트랜잭션을 적용해 거래 도중 하나라도 실패하면 거래 전의 상태로 되돌릴 수 있습니다. 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 Commit이라하고, 작업 도중 하나라도 실패해 이전으로 되돌리는 것을 Rollback이라 합니다...