회사에 입사 한지 한 달 하고도 2주가 지났다. 6주 지남. 그런데 아직도 제대로 회사 서비스를 이해하기가 쉽지가 않다. 처음 접해보는 서비스면서 회사 코드를 보면서 드는 생각은 정말 코드를 많이 안쳐봤다는 거다. 개발자는 코드를 쳐야 개발자도 많은 코드를 쳐야 여러 코드를 빠르게 이해할 수 있고, 눈치껏 코드를 알아갈 수 있고 갖고 갈 수 있고 코딩할 수 있다. 부족함을 많이 느낀다. 개인의 속도대로 가야 오버페이스 하지 않고 지치지 않기에 개인의 페이스를 지키고 싶지만, 막상 마음의 조급함으로 그렇지 못하다. 많은 이야기를 들어봤기 때문에 그렇게 막... 심적으로 힘들지는 않지만, 못한다는게 좀 힘들다. 개인의 공부를 어떤식으로 가져가야할지 어떤 공부를 해야할지 고민이 많다. TIL 을 하도록 노력하..
스프링 시큐리티를 적용하면서 직접 시큐리티를 커스텀 설정한다. Spring @EnableWebSecurity vs @EnableGlobalMethodSecurity Protecting Our Endpoints --> @EnableWebSecurity With Spring Security on the classpath, Spring Boot Security Auto-Configuration‘s WebSecurityEnablerConfiguration activates @EnableWebSecurity for us. AD This applies Spring's default security configuration to our application. Default security activates both ..
Spring Core 인 Bean과 Container의 관계를 알고 있습니다. 스프링은 좋은 객체 지향 어플리케이션을 만들 수 있도록 도와주는 하나의 프레임워크 입니다. 따라서 스프링의 핵심은 객체 지향입니다. 이러한 객체 지향의 방향으로 스프링의 bean과 container는 스프링의 core입니다. 스프링 컨테이너 는 객체의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해줍니다. 객체관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있는 장점이 있습니다. 그렇다면 스프링 Bean은 무엇인가? Bean 은 스프링 컨테이너에 등록된 객체를 말한다. 따라서 스..
Spring Framework Spring Core 인 Bean과 Container의 관계를 알고 있습니다. 스프링의 특징인 IoC/DI 를 관계를 알고 있습니다. Spring AOP를 관계를 알고 있습니다. Spring MVC 를 이용해 프로젝트를 진행하였습니다. MVC 패턴에 대해 설명해주세요 - jwt JWT는 JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 웹 토큰입니다. 토큰에서 사용할 정보 JWT는 헤더, 페이로드, 시그니쳐 3 부분으로 이루어지며 각 부분은 Base64Url로 인코딩 됩니다. 토큰의 헤더는 시그니쳐를 해싱하기 위한 알고리즘이 지정되어있고 페이로드는 토큰에서 사용할 정보가 담겨있습니다. 시그니쳐는 토큰을 인코딩 혹은 유효성 검증을 할 때 사용하는 고유한..
JAVA OOP의 특징인 상속, 캡슐화, 다형성, 추상화 를 설명할 수 있습니다. - 캡슐화 (자바 접근 제한자) : 정보의 은닉 실제로 구현 부분을 외부에 드러나지 않도록 하는 것 변수와 메소드를 하나로 묶음 데이터를 외부에서 직접 접근하지 않고 함수를 통해서만 접근 public : 모두가 접근 가능 protected : 상속 / 같은 패키지 내 클래스에서 접근 가능 default : 같은 패키지 내 클래스에서 접근 가능 private : 본인만 접근 가능 -상속 : 재사용 + 확장 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것 기능의 일부분을 변경하는 경우 자식 클래스에서 상속받아 수정 및 사용함 상속은 캡슐화를 유지, 클래스의 재사용이 용이하도록 해 준다. -추상화 인터페이스로 클래스들의 ..
Github Actions이란? Github Actions이란 Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. 테스트, 빌드, 배포 등의 다양한 작업들을 자동화하여 처리한다. ※ 깃헙액션과 같은 다른 도구는 무엇이 있는가? 젠킨스 Jenkins 는 Java 기반, 크로스 플랫폼, 오픈 소스 CI/CD 도구이다. 지속적인 제공과 함께 지속적인 통합을 제공한다. 또한 실시간 테스트 및 보고가 가능하다. Jenkins Pipeline은 전달 파이프라인을 "코드로" 모델링하는 데 사용할 수 있는 도구 세트를 제공한다. Jenkins는 DSL(도메인별 언어)을 사용하여 파이프라인을 구현한다. 그것은 오픈 소스이며 오랫동안 존재했기 때문에 널리 사용되는 최고의 CI/CD 도구..
🎈deploy.sh 작성 → 리눅스 쉘 스크립트 작성 : CI/CD는 개발자가 하는 작업을 다양한 프로그램들을 활용하여 자동으로 통합배포하는 것이다. 따라서 자동배포에 사용하는 프로그램들이 어떤 과정으로 이루어지는지 정확히 알아야했다. CI/CD를 구현하는 프로그램들은 아무것도 없이 알아서 해주는게 아니다. 개발자가 직접 코드를 작성하여 명령을 해주어야한다. 그러한 과정 중에 작성하는 쉘 스크립트는 제대로 경험해보지 못했기에 CI/CD 과정중에 맞닥뜨린 기억에 남는 트러블 슈팅 중 하나이다. 백엔드는 해당과정에서 발생한 트러블 슈팅에 대해서 공유해보도록 하겠다. GithubAction + S3 + CodeDeploy 를 사용하여 CI/CD를 구축하는데 해당 과정 중 ec2에서 실행될 deploy.sh 파..
CICD 란 무엇인가? CI는 지속적인 통합(Continuous Integration)을 의미한다. 여러 명의 개발자가 동시에 개발할 때, 코드 작업을 하면 정기적으로 빌드 및 테스트 과정을 거쳐 공유 리포지토리에 통합된다. CD는 Continuous Delivery\ Continuous Deployment를 의미한다. 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다. 각자 작업한 코드들을 통합하고(CI), 자동으로 프로덕션 프로그램에 배포한다(CD) Github Actions / AWS S3 , Code Deploy를 사용한 배포 과정 aws에서 S3, IAM, CodeDeploy, ec2 설정 github repository에 push/pr 후 테스트..