일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플러터 공부
- 스프링 공부
- JPA 공부
- 스프링부트
- Flutter
- DDD
- nestjs
- JPA
- 프로그래머스
- JPA스터디
- 자료구조공부
- JPA공부
- 알고리즘공부
- querydsl
- Kafka
- 스프링부트공부
- nestjs공부
- 코테준비
- JPA예제
- Axon framework
- 스프링
- K8S
- 코테공부
- 스프링공부
- 기술공부
- 카프카
- 기술면접공부
- 플러터 개발
- nestjs스터디
- 자바공부
- Today
- Total
목록분류 전체보기 (715)
DevBoi
oAuth가 필요한 이유는 무엇일까? 각각의 웹사이트에서는 각기 다른 인증방법을 가진다. 각기 다른 인증방법을 가지게되면, 각각 다르게 개발되어있는 인증 시스템들을 감안하여, id,pw를 쳐서 각각 다르게 들어가야한다. 일단 구조는 아래와 같은 구조를 가진다. 간단하게 oAuth는 인증과 권한을 획득하는 것이다. 각 애플리케이션들이 개인정보에 대한 저장을 각자하게되고, id,pw에 대한 제공을 각 애플리케이션마다 하게되면서, 한가지의 플랫폼을 통해서 로그인하는 방법이 나오게 되었다, 쉽게 말하면, 서비스를 통해서, Oauth를 제공하는 쪽의 로그인을 요청하고, 해당 Oauth에서 권한 코드를 발급한다. 발급함과 동시에, 콜백 url로 리다이렉트 시킨다. 이 url을 기반으로 access토큰을 요청, 및 ..
Docker는 서버 컨테이너 기술이다. 서버 컨테이너 기술은, application을 환경에 구애 받지 않고, 실행시켜주는 기술이다. 이렇게 만 써져 있으면, 공부를 이제 시작하는 사람이라면, 해당 글을 보고 ?_? 어쩌라는 거지 라고 생각을 하게 된다. 좀 더 구체적으로 예를 들어서, 해당 설명을 해볼까한다. 실제 서비스를 운영하기 위해서는, 여러가지의 서버를 동시에 띄우게 된다. api, data-api등등 다양한 서버들을 띄우게 되고 이서버의 같은 application을 깔더라도, 같이 호환하는 것들에 대한 구성을 같이 할수 없는 경우가 존재한다. 예를 들어서, 어떤 서버를 구성하는 app은 최근이여서 3.4버전을 이전 서버는 2.1 버전을 설치한다고하고 운영중에, 버전차이로인해 다운을 겪었다고 가..
Clean Code 의 정의란 무엇일까? 클린 코드란, 쉽게 읽기 쉽고 우아한 코드이다. 우아한 코드? 이게 왜 필요함? 우아한 코드 = 클린 코드 = 가독성이 쉬운 코드 를 사용하지 않는다면? 대부분의 개발자들이 운영 개발을 한다고 가정해보자, 대부분 신규 구축하는 프로젝트던 수정하는 프로젝트던, 개선을 하는 프로젝트이던, 개발자는 자신의 개발 이후로 다른 개발자가 자신의 코드를 보고 이해하기 쉽게 코딩을 해야하는 의무가있다. 왜냐하면, 코딩작업이란 0 to 100이 아니기 때문이다. 대부분 작성되어있는 코드를 읽고 이해하여, 수정하는 개발을 하기 마련이다. 작성되어있는 코드를 읽는 작업에 대한 감축 및 이슈 대응시 소스분석을 위해서, 해당 코드를 더럽고어렵게 써놓는다면 주석으로도 커버할수없다. 그래서..
내가 다니는 회사, 그리고 대부분의 회사에서는 무중단 배포 시스템을 가질 것이다. 이렇게 무중단 배포를 하기 위해서 가장 많이 사용하는 방식은 블루-그린 방식의 배포 방법이다. 24시간 서비스를 해야하는, 배포가 되어도, 중단이나 다운타임을 가지면 안되는 서비스들에서 가장 많이 가지는 방식이며, 해당 방법에 대해서 알아보도록 하자 무중단 배포가 되기 위해서는 우선 로드 밸런서를 통해 연결된 두개 이상의 인스턴스에서 트래픽을 제어해서 배포하는 것이다. 1) 롤링 배포 롤링 배포는, 한개의 인스턴스를 로드밸런서를 통해, 라우팅 하지 않도록 설정한뒤에, 해당 인스턴스의 버전을 높이고, 다시 라우팅하여, 점진적으로 배포하는 방식으로의 배포이다. 해당 부분은, 배포 중간 롤백에 대해서는 비교적 자유롭지만, 신버전..
Mybatis 로 개발을 진행하다면, 해당 prepared statement와 일반 statement의 차이에 대해서 알아두어야 할 필요가 있다. Mybatis에서 단적인 예로, 쿼리의 파라미터에 대한 방법을 다르게 줄 수 있다. 1. #{storeNo} , ${storeNo}가 있다. mybatis에선 해당 #, $를 다르게 쓸수가 있는데, 해당 방법에 대해서는, 어떤 차이가 있는지 살펴보자, 우선 #{} 과 같은 쿼리문은, 같은 쿼리문을 바인드 변수값만 바꿔서 반복적으로 실행하기 위해 사용하는 prepared statement이다. 해당 방법은 어떻게 동작할까? 우선 Prepared statement를 동작시키면, 해당 쿼리는 ?가 표함된, 쿼리문을 DBMS로 보내게 된다. 해당 DBMS는 해당 쿼리..
TDD라는 방법을 개발하면서 많이 들어봤을 것이다. TDD에 대한 정의 와 장단점에 대해서 자세히 한번 정리를 해보자 TDD : 테스트 주도 개발방법, 테스트 드라이븐 개발, 말 그대로 일반적인 개발 수행 기법이 아닌, 개발을 하고 테스트를 애자일화하여 끊임없이 테스트 하면서 개발을 진행하는 것이다. Spring framework에서는 제일 대표적으로 JUnit 이 있다. 우선 JUnit에 대한 사용방법에 대해서 알아보기 전에, 해당 방법의 장단점에 대해서 한번 정리를 해보자 장점 : 1. 객체 지향적인 코드 생산 - TDD는 코드의 재사용 보장을 명시 한다. TDD자체가, 우선 객체 지향적인 코드의사용을 명시한다. 해당 사유는 간단하다. JUnit을 통해서 테스트 하는 부분은 객체로 모듈화가 이루어진 ..
일단 jpa 관련 예시 소스를 한번 보자 Team과 member에 대한 연관관계를 잘 생각해보자 이런 경우에, Team이 연관관계에 주인이라고 할수있다. 이렇게 member에서 가져다가, team에 대한 정보를 update 및 저장 등을 한다고 가정해보자 즉 모든 멤버는 각자 소속된 팀이 있거나, 없다. 이제 Member를 만들고, 이 멤버에 Team을 set해보자 db에는 어떻게 담기게될까?? Member의 Team을 set하였고, 해당 Member를 set, persist를 하게되면, 저렇게 db에 담기게된다. 그런데, 만약에 한 로직에서, flush가 되지않고, 1차 캐시에 값이 남아있는 상태로 find하게되면? add되지않은 상태에서, 값이 find 될 경우가 있다. (트랜잭션 관리) 따라서, 해..
1. appstore에서 xcode를 다운받는다, 다른데서는 링크로 다운로드를 받고 진행하라고 했지만, 난 개인적으로 이게 제일 편한듯하다. (그리고, 홈페이지로 다운받으면, unable뜬다...) 무튼 다운받고 실행하면 create project할수있고, 저기에서 app을 프로젝트가 생성된다 ios게임도 개발가능해서 나중에 만들어보고싶다 스프링이랑 비슷하게 도메인도 지정해주고 어쩌고 저쩌고하면, 이제 이런식으로 프로젝트가 생성된다. 프로젝트가 생성되고, 기본 설정 파일 및 세팅 프레임웤 파일들이 보인다. 하나씩 분석 해보자 분석하기전에, 만약에 프로젝트 생성 할때 ui를 swiftUi로하면, 구조가 저렇게 뜬다. 구글대부분의 자료에서는 ViewController가있는 자료들이 많기때문에 초심자는 Ui ..
IOS 로 모든 주변 개발 기기를 mac os로 맞추다보니, AOS 개발만 했던 나에게 IOS 앱개발은 흥미로웠다. 특히 앱개발로 다양한걸 출시해보고도 싶었다. 1. Xcode ? AOS는 안드로이드 스튜디오를 깔아서했는데, Xcode를 깔아서 해야한다고하네; xcode는 무료로 사용할수있는 ios 개발 툴이다. 이걸로 프로젝트 만들면서 진행하면 된다. 2. 언어 swift 이다. 옵셔널로 주목을 받은 언어 ㅋㅋ 자바랑은 다르지만 비슷할걸로 보인다. 그러면 내일 부터 하나씩 시작해보자 예제부터 뭔가 IOS앱개발은 많이 개발 공부는 못할것같구, 심심하고 지루할때 쪼금씩 해봐야겠다 ㅋㅋ 그냥 장난감 만드는 스킬 만들수있다고 생각을 할만큼만...ㅋ
1. 서버가 여러대일때 세션 관리하는방법 -물론 실습을 바탕으로 진행이 되어야 하지만, 간단하게 지식을 익혀보자 세션이란, 사용자의 정보 혹은 로그인 정보를 서버 쪽에서 캐싱해서 가지고 있는 것이다. redis 와같이 세션 관련, 서버가 있는 경우도 있고 was내에서 별도 세션을 저장하는 경우도 있다. 만약에 a라는 사용자가, 로그인을 하고 이정보를 세션에 저장했다고 가정한다. 이 경우에, 서버의 트래픽이 몰릴것을 감안하여, 스케일 아웃을 했다고 한다면, 각 서버에서 가지고 있는 세션의 정보는 각 was 별로 다르게 된다. 이럴 경우에는, 어떻게 해야 문제를 해결할수 있을까 1. sticky session 방식을 사용하면된다. 말그대로, 고정 세션이다. 사용자 usr1이 로그인을 하고 이 정보를 was1..